# from my_moudle import login # # # 1.找my_moudle模块 # # #2 开辟属于这个模块的命名空间 # # #3执行这个模块(注意这里的意识是读完这个文件) # # # 知道了要import 的是login这个名字。就会在本文件中创建一个变量login,指向模块命名空间中的login函数 # # # print(my_moudle.name) #NameError: name 'my_moudle' is not defined .因为这里并没有建立引用指向my_moudle 模块 # # # 这里没有引用指向moudle模块 # # # # # 导入了什么,就能使用什么,不导入不意味者不存,只是没有建立文件到模块中其他名字的引用, # # # # login() # 登录 dudu # # # 因为my_moudle先执行了,所以name = "dudu" # # # # def login(): # # print("本文件") # 在这里实现了login,但是在之前调用的login的时候没有login这个函数,所以会执行模块中的函数 # # # # # # login() # # # # # 登录 dudu # # # 本文件 # # # # from my_moudle import login # 找到moudle发现已经导入了,import login 再次建立对模块中login的引用 # # login() # # # 当模块中导入的方法或者变量和文件重名的时候,那么这个歌名字只代表最后一次对他赋值的那个方法或者变量 # # # # # 登录 dudu # # # 本文件 # # # 登录 dudu # # name = "本文件" # login() #登录 dudu # # # 在本文件中对全局变量的修改不会影响到模块中变量的引用 # # # 重命名 # from my_moudle import login as l #只是改变了本文件中对login的引用 # l() # # 导入多个模块 # from my_moudle import login,name # login() # print(name) # name = "太亮" # 这里只是相当于修改了对name的引用 # login() # print(name) # # #登录 dudu # # dudu # # 登录 dudu # 太亮 # # 重命名 # from my_moudle import login as l, name as n # l() # print(n) #from 模块 import * # 表示对模块中所有元素同名引用 # __all__ 可以控制 from 模块 import * 中 * 的导入情况 from my_moudle import * login() print(name)
my_moudle.py
__all__ = ["login"] name = "ho" def login(): print("登录",name) name = "dudu"