Python Namespace

Create the following files (modules)

m1.py

def start():
    print('Start Module {}'.format('m1'))
def end():
    print('End Module {}'.format('m1'))
m2.py
def start():
    print('Start Module {}'.format('m2'))
def end():
    print('End Module {}'.format('m2'))

Test namespaces with the following programs

import m1
import m2
start()
from m1 import *
from m2 import *
start()
m1.start()
import m1 as m1
from m2 import *
m1.start()
start()
from m1 import start
from m2 import *
m1.start()
m1.end()
start()
end()
from m2 import *
from m1 import start
##m1.start()
##m1.end()
start()
end()

What happened? Why?