模块的分类:
1) import 模块名 ---- 导入某模块
第一次导入模块执行三件事
被导入的模块有独立的名称空间: 每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,在编写自己的模块时,就不用担心我们定义在自己模块中全局变量会在被导入时,与使用者的全局变量冲突.
可以为模块起别名: import 模块名 as 别名
导入多个模块: 推荐一个一个导入 -- 多行导入:易于阅读,易于编辑,易于搜索,易于维护
2) from...import...
from 模块名 import 变量,函数名
from...import... 与import对比: 使用from...import...是将模块中的名字直接导入到当前的名称空间中,所以在当前名称空间中,直接使用名字就可以了.无需加前缀:模块名.
form..import.. 的方式有好也有坏:
3) from...import*
from ... import * 与__all__
配合使用(写在模块文件中)
__all__
= [‘name‘,‘read1‘] 写在模块文件中,控制 * 的取值范围 只导入模块中的两个函数
4) py文件的两种功能
编写好的一个Python文件可以有两种用途
Python为我们内置了全局变量__name__
当文件被当做脚本执行时:__name__
等于__main__
当文件被当做模块导入时:__name__
等于模块名
print('from the tbjx.py')
__all__ = ['name', 'read1',]
name = '太白金星'
def read1():
print('tbjx模块:',name)
def read2():
print('tbjx模块')
read1()
def change():
global name
name = 'barry'
if __name__ == '__main__':
# 在模块文件中测试read1()函数
# 此模块被导入时 __name__ == tbjx 所以不执行
read1()
5) 模块的搜索路径
内存中已经加载的模块->内置模块->sys.path路径中包含的模块
模块的查找顺序
# 寻找模块的路径: 内存 ----> 内置模块 ---> sys.path中找
# 只要这三个地方:内存 内置模块 sys.path可以找到这个引用的模块的路径,这个模块就可以直接引用到.
# 如何引用到tbjx1.py
import sys
# print(sys.path) 是一个列表
sys.path.append(r'D:\s23\day15')
import tbjx1
tbjx1.read1()
原文:https://www.cnblogs.com/Agoni-7/p/11093719.html