python模块(Module)是一个Python文件,以.py结尾。模块能定义函数、类和变量,模块里也能包含可执行的代码。
Python中有很多各种不同的模块,每一个模块都可以帮助我们实现一些功能,比如实现和时间相关的功能就可以使用time模块,我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用,进而实现不同的功能。
模块在使用前需要先导入
[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]
下面一一进行演示
# 导入时间模块
import time
print('让程序进入睡眠状态,开始')
time.sleep(1)
print('睡眠状态结束')
# 导入时间模块中的sleep方法
from time import sleep
print('程序睡眠开始')
sleep(1)
print('程序睡眠结束')
# 利用 * 可以将模块内部的全部函数全部导入进来
from time import *
# 获取时间戳
print(time())
# 程序睡眠
sleep(1)
# 比较有意思的玩法
import time as tm
tm.sleep(1)
print(tm.time())
# 给模块的方法起别名
from time import sleep as s
print('1')
s(1)
print('1')
当导入多个模块的时候,且模块内有同名函数,当调用这个同名函数的时候,调用到的是后面导入的模块的函数
def func(a, b):
c = a + b
print(f'我是test01模块内的函数\n运算的结果为:{c}')
def func(a, b):
c = a * b
print(f'我是test02模块内的函数\n运算的结果为:{c}')
from test01 import func
from test02 import func
if __name__ == '__main__':
func(10, 20)
很明显意料之中!!
之前一直使用的
if __name__ == '__main__':
解释一下:
只有当程序是直接执行的才会进入if内部,如果是被导入的(即在另外一个文件里面调用该文件),则if无法进入
如果一个模块文件中有__all__变量,当使用from xxx import *导入时,只能导入这个列表中的元素
(一)利用上面创建的两个test文件和main进行演示
在test01文件中写入以下代码:
__all__ = ['func01']
def func01(a, b):
c = a + b
print(f'我是将两个变量进行相加的函数\n运算的结果为:{c}')
def func02(a, b):
c = a * b
print(f'我是将两个变量进行相乘的函数\n运算的结果为:{c}')
那么在main函数中就只能写入以下代码:
from test01 import func01
if __name__ == '__main__':
func01(10, 20)