记录一下关于Python在导入模块时候一些操作~
Python魔法方法:__all__
Python内置模块:importlib
当你在使用 from xxx import * 时候,可以通过 __all__ 来指定可被导出的变量
虽然 from xxx import * 极其不优雅,但如果在编程中定义了许多变量的话,那导入还是令人头疼的
项目组织如下:
demo_package/__init__.pya.pyb.py
a.py
def say_hi():print('hi')def say_hello():print('hello')# 只导出 say_hi 方法
__all__ = ['say_hi']
b.py
from a import *say_hi()
say_hello()
程序b.py 执行如下所示:

在package里,如果有多个文件,这时候需要导入这些文件的变量,
可以通过在__init__.py 中里填写需要导入的变量,从而使得可以根据 package 名称导入变量,使得代码更加优雅
项目组织如下:
demo_package/__init__.pya.pyb.py
a.py
def func_a():....
b.py
def func_b():....
__init__.py 填写以下内容
__init__.py
from .a import func_a
from .b import func_b
一般的导入是
from demo_package.a import func_a
from demo_package.b import func_b
而做了上述修改之后,导入这些变量的代码如下:
from demo_package import func_a
from demo_package import func_b
在生产环境中,应该是用不上这个功能;
但如果是在调试时候,这个功能还是挺好用的。因为当你修改了你的代码后,可以通过重新加载模块就立即生效,而不用等待下一次执行再生效。
# 导入模块
import module"""中间你对module 做了修改"""# 重新导入模块
importlib.reload(module)
通过字符串来导入模块,这个功能我是找不到应用场景~
只是觉得有趣,就记录一下!!
通过字符串导入模块.py
import importlibmodule_name = importlib.import_module('module_name')
简单示例.py
import importlibdef create_func(_str: str):return importlib.import_module(_str)func = create_func('math')
print(func.__name__)
print(func.sin(2))
output:
math
0.9092974268256817
怎么样,用不上的知识又增加了吧!!
本次分享到此结束,🐱🏍🐱🏍
see you~