模块

定义:Python 模块(Module),是一个 Python 文件,以 .py 结尾. 模块能定义函数,类和变量,模块里也能包含可执行的代码。

模块的导入方式

语法[from 模块名] import [模块|类|变量|函数|*] [as 别名]

常用组合

  • import 模块名

  • from 模块名 import 类、变量、方法等

  • from 模块名 import *

  • import 模块名 as 别名

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

import 模块名

基本语法:

import 模块名
import 模块名1,模块名2

模块名.功能名()

案例:导入time模块

# 导入时间模块
import time
print("开始")
# 让程序睡眠1秒(阻塞)
time.sleep(1)
print("结束")

from 模块名 import 功能名

基本语法:

from 模块名 import 功能名

功能名()

案例:导入time模块中的sleep方法

# 导入时间模块中的sleep方法
from time import sleep
print("开始")
# 让程序睡眠1秒(阻塞)
sleep(1)
print("结束")

as定义别名

基本语法:

# 模块定义别名
import 模块名 as 别名

# 功能定义别名
from 模块名 import 功能 as 别名

案例

# 模块别名
import time as tt
tt.sleep(2)
print('hello')
# 功能别名
from time import sleep as sl
sl(2)
print('hello')

自定义模块

每个Python文件都可以作为一个模块,模块的名字就是文件的名字。

测试模块

在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息。此时会出现一个问题,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行test函数的调用。

解决方案

def test(a, b):
print(a + b)

# 只在当前文件中调用该函数,其他导入的文件内不符合该条件,则不执行test函数调用
if __name__ == '__main__':
test (1, 1)

注意事项:当导入多个模块的时候,且模块内有同名功能. 当调用这个同名功能的时候,调用到的是后面导入的模块的功能

__all__ 变量

如果一个模块文件中有__all__变量,当使用from xxx import *导入时,只能导入这个列表中的元素

Python包

定义:从物理上看,包就是一个文件夹,在该文件夹下包含了一个 __init__.py 文件,该文件夹可用于包含多个模块文件。从逻辑上看,包的本质依然是模块。

作用:当我们的模块文件越来越多时,包可以帮助我们管理这些模块, 包的作用就是包含多个模块,但包的本质依然是模块

创建包

步骤:

  • 新建包my_package

  • 新建包内模块:my_module1my_module2

  • 在模块内补充代码

导入包

  • 方式一
import 包名.模块名
包名.模块名.目标
  • 方式二

注意:必须在__init__.py文件中添加__all__ = [],控制允许导入的模块列表。 __all__针对的是from ... import *这种方式,对 import xxx这种方式无效

from 包名 import *