from_import.py
#import my_module
from my_module import login
#不是python解释权发现的错误,而是pycharm根据他的一些判断而得出的结论
#from my_module import login
# 1.找到my_module模块
#2. 开辟一块属于这个模块的命名空间
#3.执行这个模块
#——————from my_module执行完了
#import login知道了要import的是login这个名字,那么就会在本文件中(就是from_import.py文件)创建一个变量login指向my_module模块命名空间中的login函数
#from import的时候发生了什么
#仍然相当于执行了整个py文件
#在from import的时候命名空间的变换
#login()#执行my_module模块中的login() 结果是login egon
#导入了什么 就能使用什么 不导入的变量 不能使用
#不导入并不意味着不存,而是没有建立文件到模块中其他名字的引用
#def login():
# print(‘in my login‘)
#login()#执行from_import.py文件中的login() 结果in my login
#from my_module import login
#login()#执行my_module模块中的login() 结果login egon
#from my_module import name#1.找到my_module模块 2.开辟一个属于这个模块的命名空间 3.执行这个模块 4.在from_import.py文件中创建一个变量name指向my_module.py文件中的变量name
#print(name)#egon
#name=‘太亮‘
#login()#执行my_module模块下的login() 结果login egon
‘‘‘my_module.name=‘太亮‘
login()#执行my_module模块下的login() 结果login 太亮‘‘‘
#结论:当模块中导入的方法或变量 和 本文件中的重名的时候,那么这个名字只代表最后一次对它赋值的哪个方法或者变量
#在本文件中对全局变量的修改是完全不会影响到模块中的变量引用的
#对模块引入的变量 重命名
#from my_module import login as l#对login重命名成l
#l()
#从一个模块中导入多个变量
#from my_module import login,name#1.找到my_module模块 2.开辟一个属于这个模块的命名空间 3.执行这个模块 4.在from_import.py文件中创建一个变量name指向my_module.py文件中的变量name,在from_import.py文件中创建一个变量login,指向my_module.py文件中的login
#login()#执行my_module.py文件中的login()函数 结果 login egon
#print(name)#egon
#name=‘太亮‘
#login()#执行my_module.py文件中的login()函数 结果 login egon
#导入多个之后重命名
#from my_module import login as l,name as n
#from模块 import*
#from my_module import *
#login()#饿了么 login alex
#print(name)#alex
my_module.py
print(‘饿了么‘) name=‘alex‘ def login(): print(‘login‘,name)
再from_import.py文件末尾添加以下代码:
#__all__可以控制*导入的内容 from my_module import * login()#my_module模块中的__all__=[‘login‘]只能访问login 其他不行 #login alex name
修改my_module.py文件为:
__all__=[‘login‘] print(‘饿了么‘) name=‘alex‘ def login(): print(‘login‘,name)
原文:https://www.cnblogs.com/long-holiday/p/9961008.html