8 模块和import语句
模块
使用python 语言编写的一整段 python 程序, 保存在以 .py 结尾的文件中, 这个以.py 结尾的文件就是 python 脚本
随着程序变得越来越长,你或许会想把它拆分成几个文件,以方便维护。你亦或想在不同的程序中使用一个便捷的函数, 而不必把这个函数复制到每一个程序中去。
为支持这些,Python有一种方法可以把定义放在一个文件里,并在脚本或解释器的交互式实例中使用它们。这样的文件被称作 模块 (模块也是脚本,只不过被称为模块,便于交流)
import
比如说我现在有个 r1 模块 和我的test.py在同一文件夹
print('hhhh')
def r1():
print('hhhhhh r1')
def r2():
print('hhhhhh r2')
def r3():
print('hhhhhh r3')
我想在我的 test.py 文件中使用 r1中的函数那么我们就可以 import r1
第一种方法
import r1 # 首先运行r1
r1.r1() # r1.名字 调用
r1.r2()
r1.r3()
结果为;
hhhh
hhhhhh r1
hhhhhh r2
hhhhhh r3
第二种方法
from r1 import r1, r2, r3
# 直接模块的名字调用 好处是简单了一些,但函数出处不明确,在调用多个模块时可能会出现混淆
r1()
r2()
r3()
结果为;
hhhh
hhhhhh r1
hhhhhh r2
hhhhhh r3
使用别名导入模块
当我们import的模块名很长时 比如 import multiprocessing 那么我们每次用到它的功能的时候都必须 multiprocessing.xxxx
这时候我们就可以给它起个别名比如 import multiprocessing as m 这样我们以后用就可以直接 m.xxx就可以了
模块搜索路径
Python 会在什么地方寻找文件来导入模块?使用命名为 path 变量的存储在标准 sys 模块
下的一系列目录名和 ZIP 压缩文件。你可以读取和修改这个列表。
import sys
for i in sys.path: # sys.path得到的是一个列表
print(i)
D:\python\CourseSystem
E:\pycharm\pycharm\PyCharm 2019.3.3\plugins\python\helpers\pycharm_display
C:\Users\aweis\AppData\Local\Programs\Python\Python37\python37.zip
C:\Users\aweis\AppData\Local\Programs\Python\Python37\DLLs
C:\Users\aweis\AppData\Local\Programs\Python\Python37\lib
C:\Users\aweis\AppData\Local\Programs\Python\Python37
C:\Users\aweis\AppData\Roaming\Python\Python37\site-packages
C:\Users\aweis\AppData\Local\Programs\Python\Python37\lib\site-packages
C:\Users\aweis\AppData\Local\Programs\Python\Python37\lib\site-packages\win32
C:\Users\aweis\AppData\Local\Programs\Python\Python37\lib\site-packages\win32\lib
C:\Users\aweis\AppData\Local\Programs\Python\Python37\lib\site-packages\Pythonwin
E:\pycharm\pycharm\PyCharm 2019.3.3\plugins\python\helpers\pycharm_matplotlib_backend
最开始的代表当前目录。Python 会先搜索当前目录:import1 会寻找文件 report.py。
第一个匹配到的模块会先被使用,这也就意味着如果你在标准库之前的搜索路径上定义一个模块 random,就不会导入标准库中的 random 模块。
浙公网安备 33010602011771号