导入模块
- 一个py文件,就是一个模块
- 不是所有的py文件都能作为一个模块来导入
- 如果想要让一个py文件能够被导入,模块名字必须要遵守命名规则
- 导入模块的方法有
```python
导入整个模块,导入以后,就可以使用这个模块里的所有方法和变量
import time
print(time.time())
直接从模块中导入一个方法,在使用时,不需要再写模块名,直接使用方法即可!
from random import randint # 导入一个模块里的方法或变量 print(randint(0,8)) # 生成一个0~8之间的随机整数
导入这个模块里某个方法或子模块(* 表示导入”所有”方法和属性)——不建议使用
from math import * print(pi)
导入整个模块,并给这个模块起一个别名
import datetime as dt print(dt.MAXYEAR)
从一个模块中导入一个方法,并给这个方法起一个别名
from copy import deepcopy as dp dp([‘hello’,’good’,[1,2,3],’hi’])
<a name="8f4e5604"></a>## 自定义模块【重点】- 就是自己写一个py文件,被导入的模块命名规则需注意:不能以数字开头。- 导入模块,使用模块中的变量和方法```pythonimport syssys.path.append('/root/.jupyter/xellgat/python3/Module/') # 搜索路径,将自定义模块路径添加到sys.path当中# 此导入需要使用模块名import test_module1x = test_module1.str1 # 使用模块中的变量print(x)y = test_module1.test1() # 使用模块中的方法print(y)z = test_module1.test2(2,3)print(z,end ='\n\n')# 此导入不需要使用模块名,和直接import功能差不多,但本质只是读取【模块下 __all__ 的属性中】有定义了哪些变量和函数;# 系统规定,使用【from 模块名 import *】这种方式,不能导入以下划线 _ 开头的变量或函数;# 如果模块中没有定义 __all__ 属性,那么就会导入所有不以 _ 开头的变量和函数 ==》 【__all__ 属性】可以理解为哪些变量和函数可以被导入;# 破解方法:使用import的方法即可!from test_module2 import *print(m)demo()# print(n) # 打印这个会报错,n变量不在 __all__ 属性中!# print(age) # 有一个下划线,不建议导入使用,会报错!
name == ‘**main**’的作用:
name 的作用是:
- 当直接运行这个py文件时,值是main,所以使用【if name == ‘main‘ 】就可以直接控制只在测试平台输出即可!
- 当py文件作为一个模块被导入时,显示的值是py的文件名, 所以使用【if name == ‘main‘ 】可以避免测试的输出显示正式环境中! ```python import sys
sys.path.append(‘/root/.jupyter/xellgat/python3/Module/‘)
from test_module1 import * # 导入模块后,不会将模块中测试的print语句在此打印出来 【见 test_module1.py 中的设定】
<a name="b7af6e1e"></a>## 包的概念- 首先,创建一个文件夹,用于存放相关的模块,文件夹的名字就是包的名字;- 其次,在文件夹中创建一个**__init__**.py的模块文件, 内容可以为空;- 最后,将相关的模块放入文件夹中;- 导入:```pythonfrom Module import test_module1 # 导入包中模块from Module.test_module1 import foo # 导入包中模块下的其中一个方法
