主要内容:
1 . from 模块 import 名字
a:执行流程
from my_module import login # my_module 里的文件内容 ''' name = 'alex' def login(): print('login',name) ''' def login():print('in my module') login() # 执行流程: 先找到my_module这个文件, 开辟属于my_module模块的命名空间,执行py文件. #知道了要import的login这个名字,哪么就在本文件中创建一个变量login,指向模块命名空间的login函数.
导入了什么,就能使用什么,不导入的变量不能使用
不导入并不代表不存在内存中,而是没有建立文件到模块中其他名字的引用
当模块中引入的方法或者变量和本文件重名的时候,那么这个名字只代表最后一次对它赋值的那个方法或者变量.
本文件中对全局变量的修改是完全不会影响到模块中的变量的引用.
b:重命名
from 模块名 import 名字 as 变量
例如: from my_module import login as ll
c: 导入多个
from 模块名 import 名字1,名字2..
d : from 模块 import * 导入该模块的所有内容
e : from 模块* 与 __all__之间的联系 __all__可以控制*导入的内容
模块中的内容 __all__可以控制导入的内容(my_module)
__all__ = ['login']
name = 'alex'
def login():
print('login',name)
2 把模块当成脚本运行:
a : 从本模块反射本模块中的变量, 在编写py文件的时候,所有不在函数和类中封装的内容都应该写在:
if __name__ == '__main__'
b : 在使用反射自己模块中的内容的时候
import sys
gettatr (sys.module[__name__], 变量名)
不能使用[sys.module['__main__']]
原因 : 当在导入该模块的文件中,'_main__'当前执行的是该文件所在的地址, 而不是模块的地址,因此在反射的时候找不到对应的变量名会报错.
3 . 模块搜索路径
模块没有导入之前在什么地方 : 在硬盘上
安装python
python整个包的结构不变
他会记录一个安装目录
其他所有目录都是都是根据安装目录来写死的.
'C:\Users\26897\PycharmProjects\untitled\Workspace\day24' #当前运行脚本所在的目录
剩余所有的都是python内置的目录
内置模块的导入
第三方模块的导入
内置模块的导入和第三方模块的导入都不需要你操心
自定义模块能否被导入
看sys.psth当中,是否存在你要导入的文件 所在的目录