补充一点模块和包的定义:
(1)模块:
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
(2)包:
包(Package)就是一个文件夹,在该文件夹下包含了一个 __init__.py 文件,该文件夹可用于包含多个模块源文件,包的本质依然是模块。
新手入门,在引用包和模块时多少会有点迷糊,我在这里总结一点区别。
图1
图1 是包的结构,文件夹名是包名,必须要包含 __init__.py 文件。__init__.py 文件的内容写的是 包内包含的模块列表和其他全局常量等等。
# __init__.py
__all__ = ["module_test"]
module_test.py 模块中包含一个class_add类,类中有函数 sum1,用于统计传入参数之和;模块中还有另一个函数 sum2,与sum1功能相同。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# module_test.py
class class_add():
def __init__(self) -> None:
pass
# 相加之和
def sum1(self, *args):
sum_ = 0
for num in args:
sum_ += num
return sum_
# 相加之和
def sum2(*args):
sum_ = 0
for num in args:
sum_ += num
return sum_
下面是main.py模块代码,下面分别是引用包的类 和 模块的方式。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# main.py
from math_test.module_test import class_add # 引用 包的类的方式
from math_test import module_test as mt # 引用 包的模块的方式
cadd = class_add()
print("cadd.sum1: " + str(cadd.sum1(1,2,3,4,5,6,7,8)))
print("mt.sum2: " + str(mt.sum2(1,2,3,4,5,6,7,8)))
下面这方式同样可以达到上面的效果 。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# main.py
from math_test.module_test import class_add, sum2
cadd = class_add()
print("cadd.sum1: " + str(cadd.sum1(1,2,3,4,5,6,7,8)))
print("sum2: " + str(sum2(1,2,3,4,5,6,7,8)))