在上一篇中,我们详细介绍了 Python 的4种变量,在讲解4种变量的作用范围时,我们提到 模块 和 包,那么模块和包到底是什么东西呢?我们将在本篇详细阐述一下。
什么是模块?
在 Python 中,模块就是一个 .py
文件,例如,my_module.py
中 my_module
是模块名。
什么是包?
在 Python 中,包是一个有层次的文件目录结构,就像文件夹一样,文件夹可以包含子文件夹和文件,同样地,包也可以包含 子包 和 模块。但是 Python 的包一定要有一个 __init__.py
文件。Python 中,很多牛人把一些机器学习、深度学习、数据处理等算法写成包公布出来,再加之 Python 语言本身的简单性,导致了很多小伙伴们非常喜欢用 Python 语言编程,大大提高了工作和学习效率,下面让我们化身成为 “调包侠” ,疯狂调包!
# 调包方式一,最常见的
import time
print(time.localtime())
# 调包方式二,起个别名
import time as t
print(t.localtime())
# 调包方式三,调包中包
from time import time,localtime
print(localtime())
print(time())
# 调包方式四,all in
from time import * #导入time包的所有功能
print(gettime())
当我们在开发自己的项目时,往往也会有些积累,把一些常用的方法规整到一起,写成工具包,以方便加速我们日后的开发效率,这时候就需要我们创建自己的模块和包:
- 首先我们要创建一个文件夹,该文件夹的名字即是我们的包名,例如,
my_output
。 - 我们在
my_output
文件夹下创建一个名为__init__.py
的 Python 文件,这是包的初始化文件,这里可以写一些初始化的代码,有人要导入我们的包时,会自动执行__init__.py
中代码。当然我们这里不需要写,因为我们的自定义包很简单。 - 新建模块
my_print.py
,内容为:
def print_data(data):
print(data)
def main():
print_data("test")
if __name__ == '__main__':
main()
然后,我们新建 package_demo.py
来演示一下调自定义的包:
from my_output import my_print
def main():
my_print.print_data("hi,小伙伴们!")
if __name__ == '__main__':
main()
但是以上可以成功调包是有一个前提的,那就是我们自定义的包 my_output
与 package_demo.py
是在同一个目录下的,如果我们将 my_output
放在 Python 的 site-package
目录下,那么这个限制就不必遵守了。注意,site-package
目录下存放了所有的第三方包。
网友评论