模块
Python模块(Module),是一个Python文件
,以.py
结尾。模块能定义函数,类和变量,模块里也能保护可执行的代码。
不同模块,同名的功能,如果都被导入,那么后者会覆盖前者
模块导入方式
模块在使用前需要先导入,导入的语法如下:
[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]
常用的组合形式如:
-
import 模块名
import time print('begin') time.sleep(3) # 使程序睡眠3秒(阻塞) print('end')
-
from 模块名 import 类、变量、方法等
from time import sleep print('begin') sleep(3) # 使程序睡眠3秒(阻塞) print('end')
-
from 模块名 import *
from time import * print('begin') sleep(3) # 使程序睡眠3秒(阻塞) print('end')
-
import 模块名 as 别名
import time as t print('begin') t.sleep(3) # 使程序睡眠3秒(阻塞) print('end')
-
from 模块名 import 功能名 as 别名
from time import sleep as s print('begin') s(3) # 使程序睡眠3秒(阻塞) print('end')
自定义模块
每个Python文件都可以作为一个模块,模块的名字就是文件的名字,也就是说自定义模块名必须符合标识符命名规则。
my_module.py
# 自定义模块
def test(x, y):
return x * y
在主程序中导入
# 自定义模块
import my_module
print(my_module.test(9, 9))
测试模块
在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,会自行在py文件中添加一些测试信息,例如,在my_module.py
文件中添加如下测试代码:
# 自定义模块
def test(x, y):
return x * y
print(test(1, 3)) # 测试代码
问题:此时,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行test函数的调用
解决方法:在模块文件中使用if __name__ == '__main__':
def test(x, y):
return x * y
if __name__ == '__main__':
print(test(1, 3))
__all__
如果一个模块文件中有__all__
变量,当使用from xxx import *
导入时,只能导入这个列表中的元素
my_module2.py
__all__ = ['test_1']
def test_1():
return 'test1'
def test_2():
return 'test2'
在程序中如下
# 自定义模块
from my_module2 import *
print(test_1()) # 若改成print(test_2()),程序会报错
包
从物理上看,包就是一个文件夹,在该文件夹下包含了一个__init__.py
文件,该文件夹可用于包含多个模块文件;从逻辑上看,包的本质依然是模块。
包的作用:当模块文件越来越多时,包可以帮助我们管理这些模块,包的作用就是
包含多个模块
,但包的本质依然是模块
自定义包
导入方式
方式一
import my_package.my_module1
import my_package.my_module2
my_package.my_module1.info_print1()
my_package.my_module2.info_print2()
方式二
from my_package import my_module1
from my_package import my_module2
my_module1.info_print1()
my_module2.info_print2()
方式三
from my_package.my_module1 import info_print1
from my_package.my_module2 import info_print2
info_print1()
info_print2()
其实和模块导入类似
在__init__.py
文件中可以添加__all__ = []
,来控制允许导入的模块列表,例如:
__all__ = ['my_module1']
必须是使用
from 包名 import *
来导入才生效
安装第三方包
在Python程序的生态中,有许多非常多的第三方包(非Python官方),可以极大的帮助我们提高开发效率,如:
- 科学计算中常用的:numpy包
- 数据分析中常用的:pandas包
- 大数据计算中常用的:pyspark、apache-flink包
- 图形可视化常用的:matplotlib、pyecharts
- 人工智能常用的:tensorflow
安装命令:
pip install 包名称
由于pip是连接的国外网站进行包下载,下载速度可能会慢。可以通过如下命令,让其连接国内的网站进行包安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
查看已安装的所有包
pip list