import模块导入的方法
import xx
import xx, yy
from xx import mm
from xx import mm, nn
import xx as XX
导入模块as的作用
import 导入了一个模块并且在当前模块中定义了一个变量引用了导入的模块
import搜索路径
结构
import sys
print(sys.path)
运行结果:
['/Users/toby/Downloads/PythonAdvanced/code/5.python高级一', '/Users/toby/Downloads/PythonAdvanced', '/Applications/PyCharm.app/Contents/helpers/pycharm_display', '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python37.zip', '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7', '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Users/toby/Library/Python/3.7/lib/python/site-packages', '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/site-packages', '/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend']
路径搜索:
从上面列出的目录里依次查找要导入的模块文件
… 表示当前路径
列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序
程序执行是添加新的模块路径
sys.path.append(路径)
sys.path.insert(0, 路径) # 可以确保先搜索这个路径
demo:
import sys
sys.path.append('/Users/toby/Downloads/PythonAdvanced/code/pythonAdvanced5Verify')
print(sys.path)
运行结果:
['/Users/toby/Downloads/PythonAdvanced/code/5.python高级一', '/Users/toby/Downloads/PythonAdvanced', '/Applications/PyCharm.app/Contents/helpers/pycharm_display', '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python37.zip', '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7', '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Users/toby/Library/Python/3.7/lib/python/site-packages', '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/site-packages', '/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend', '/Users/toby/Downloads/PythonAdvanced/code/pythonAdvanced5Verify']
重新导入模块
为了防止模块的重复导入,只有第一次导入才会生效,后面不会生效;
模块被导入后,import module不能重新导入模块,重新导入需用reload
reload可以在不重启项目的情况下就可以完成模块的重新加载,必须是之前已经完成的模块
结构:
import imp import reload
reload(模块名)
import xx和from xx import mm的区别
import
新建三个文件
main.py控制程序启动和运行
from recv_msg import *
from handle_msg import *
def main():
# 1.接收数据
recv_msg()
# 2.测试是否接收完毕
test_recv_data()
# 3.判断如果处理完成,则接收其它数据
recv_msg_next()
# 4.处理数据
handle_data()
# 5.测试是否处理完毕
test_handle_data()
# 6.判断如果处理完毕,则接收其他数据
recv_msg_next()
if __name__ == "_main__":
main()
common.py存储配置信息
RECV_DATA_LIST = list() # 用来存储数据
HANDLE_FLAG = False # 用来标记数据是否处理完成
handle_msg.py处理信息
from common import RECV_DATA_LIST
import common
def handle_data():
"""模拟处理recv_msg模块接收的数据"""
print("--->handle_data")
for i in RECV_DATA_LIST:
print(i)
common.HANDLE_FLAG = True
import 模块名:表示导入模块并在当前模块中定义一个模块名称相同的变量指向模块的引用
from 模块名 import 属性/方法:表示定义一个全局变量指向了模块中的属性/方法,而在使用时只表示当前文件中的局部变量。
所以在实际开发中对于公共的库最好使用import 模块名导入