8 模块和import语句

模块和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 模块。

 

posted @ 2020-08-24 11:49  阿伟啊啊啊啊  阅读(221)  评论(0)    收藏  举报