首页 > 技术文章 > Python——模块和包

kekefu 2020-02-22 17:06 原文

一、概念

"""
模块():
一个python文件,以 .py 结尾,包含python对象定义和语句。
模块可以定义函数、类、变量,也可包含可执行文件

导入模块:
1.import 模块名
2.from 模块名 import 功能名
"""

二、具体知识点

2.1定义别名

  import 模块名 as 别名
  from 模块名 import 功能名 as 别名

  使用别名后,原来的名字被替代

def t4():
    """定义别名
    import 模块名 as 别名
    from 模块名 import 功能名 as 别名
    """
    import time as tt
    tt.sleep(2)
    # time.sleep(2)     # 使用别名后,原来的名字被替代
    # NameError: name 'time' is not defined
    print('hello')

    # from time import sleep as s1
    # s1(2)
    # print('hello')

2.2重名的严重性  

 1 """
 2 导入一个模块,Python解释器对模块位置搜索顺序: 由进及远
 3       1.当前目录
 4       2.搜shell变量PYTHONPATH下的目录
 5       3.查看默认路径,UNIX下,默认一般为/user/local/lib/python
 6 注意:
 7       1.自定义模块不与已有模块名重名,若重复,则无法使用;
 8       2.若自定义于导入的功能重名,则调用后写的功能
 9 """
10 # import random
11 # num = random.randint(1, 5)
12 # print(num)
13 
14 # from time import sleep
15 
16 # def sleep():
17 #     print('1')
18 
19 # sleep()
20 
21 """
22 扩展:重名的严重性
23 Python,引用传递数据
24 1.命名后者会覆盖前者,和模块重名的变量会覆盖功能
25 """
26 import time
27 print(time)         # <module 'time' (built-in)>
28 # time = 1
29 # print(time)         # 1

2.3__all__列表

 1 import math
 2 
 3 __all__ = ['t_1']
 4 # 若有其他文件调用本文件,则只导入t_1()
 5 
 6 
 7 def t_1(a, b):
 8     print(math.fabs(a+b))
 9 
10 
11 def t_2(a, b):
12     print(a * b)
13 
14 
15 # print(__name__)     # __main__
16 if __name__ == '__main__':
17     """
18     测试信息
19     __name__:系统变量,模块标识符,
20     值,需根据使用位置来确定
21     在自身文件中:__main__
22     在其他文件中:模块名字
23     main:
24     """
25     t_1(1, 2)
26     t_2(2, 3)

2.4制作包

 1 """
 2 包:有联系的模块组织在一起,放到同一个文件夹,
 3     并自动创建一个__init__.py文件
 4 制作包:new ——> 包名 ——> Enter ——> 制作模块
 5 导入包:
 6     1.import 包名
 7     2.from 包名 import *
 8 """
 9 import my_module1
10 
11 
12 def t1():
13     import mypakage.my_module1
14     mypakage.my_module1.info_print()
15 
16 
17 def t2():
18     """
19     必须先在 __init__.py 文件中添加 __all__ = []
20     控制允许导入的模块
21     原因:不同模块内可能有相同名字的功能
22     """
23     pass
24 
25 
26 from mypakage import *
27 my_module1.info_print()
28 
29 
30 # if __name__ == '__main__':
31 #     # t1()
32 #     t2()

三、总结

  模块是.py文件,包是包含.py文件的文件夹。

推荐阅读