导入模块

  • 一个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’])

  1. <a name="8f4e5604"></a>
  2. ## 自定义模块【重点】
  3. - 就是自己写一个py文件,被导入的模块命名规则需注意:不能以数字开头。
  4. - 导入模块,使用模块中的变量和方法
  5. ```python
  6. import sys
  7. sys.path.append('/root/.jupyter/xellgat/python3/Module/') # 搜索路径,将自定义模块路径添加到sys.path当中
  8. # 此导入需要使用模块名
  9. import test_module1
  10. x = test_module1.str1 # 使用模块中的变量
  11. print(x)
  12. y = test_module1.test1() # 使用模块中的方法
  13. print(y)
  14. z = test_module1.test2(2,3)
  15. print(z,end ='\n\n')
  16. # 此导入不需要使用模块名,和直接import功能差不多,但本质只是读取【模块下 __all__ 的属性中】有定义了哪些变量和函数;
  17. # 系统规定,使用【from 模块名 import *】这种方式,不能导入以下划线 _ 开头的变量或函数;
  18. # 如果模块中没有定义 __all__ 属性,那么就会导入所有不以 _ 开头的变量和函数 ==》 【__all__ 属性】可以理解为哪些变量和函数可以被导入;
  19. # 破解方法:使用import的方法即可!
  20. from test_module2 import *
  21. print(m)
  22. demo()
  23. # print(n) # 打印这个会报错,n变量不在 __all__ 属性中!
  24. # 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 中的设定】

  1. <a name="b7af6e1e"></a>
  2. ## 包的概念
  3. - 首先,创建一个文件夹,用于存放相关的模块,文件夹的名字就是包的名字;
  4. - 其次,在文件夹中创建一个**__init__**.py的模块文件, 内容可以为空;
  5. - 最后,将相关的模块放入文件夹中;
  6. - 导入:
  7. ```python
  8. from Module import test_module1 # 导入包中模块
  9. from Module.test_module1 import foo # 导入包中模块下的其中一个方法