常规模块导入![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bb2bdbd04381ab011838875b5fb9045d.png)
自定义模块导入
自定义一个 model.py 文件,内部有函数 test()
# model.py
def test(a, b):
return a + b
新建一个 once.py ,并导入model模块
import model
print(model.test(3, 4))
===========================
>>> 7
main变量
若在 model.py 文件的编写测试过程中,会出现一些无关的输出,而这些输出在我们的 once.py 文件的运行中并不需要,该如何在运行 once.py 的过程中避免运行输出 model.py 的内容呢?
可以在 model.py 中加入main() 函数,将我们测试运行 model.py 文件过程中的运行代码放入到 main() 函数中,这样我们在导入到 once.py 并运行的时候,就不会被 model.py 中的一些代码输出所干扰。
(表达的有点模糊 0.0)
换个说法:
if name == ‘main:’ 表示,只有当程序是直接执行的才会进入if内部,如果是被导入的,则if无法进入
示例:
def test(a, b):
return print(a + b)
if __name__ == '__main__':
test(2, 3)
===============================
>>> 5
测试 model.py 的过程中会输出5,将 test(2, 3) 放入 main() 函数体内后,如果将 model.py 导入到别的模块后,这个 5 就不会被输出。
__all__变量
语法:
all = [‘函数1’, ‘函数2’,…]
如果在另一个文件里使用 **import ***的方式进行导入的话
只有在__all__ = [‘函数1’, ‘函数2’,…]内的函数,在导入后可以被调用,不在列表内的函数不可调用
# model.py
__all__ = ['test_a']
def test_a(a, b):
print(a + b)
def test_b(a, b):
print(a - b)
此时在另一个文件中导入model模块,只有test_a()函数可用。