新新a.py代码如下:
VAR1 = 123 # 没有_变量
__VAR2 = 124 #有两个
_VAR3 = 44 #有一个
新建b.py代码如下:
from pb import *
print(VAR1)
print(__VAR2)
print(_VAR3)
运行 b.py 输出:
VAR1可以正常输出, _VAR2, __Var3 报错 not defined
可以通过以下语句引用,可以正常输出:
from pb import VAR1, _VAR3, __VAR2
print(VAR1)
print(__VAR2)
print(_VAR3)
还可以通过把变量字符串列表给变量 all,以达到隐藏的效果
all = [“VAR1”, "VAR2", "VAR3"]
使用 此 功能 时, from* 语句 只 会把 列 在 all_ 列表 中的 这些 变量 名 复制 出来。 事实上, 这 和_ X 惯例 相反:__ all__ 是 指出 要 复制 的 变量 名, 而_ X 是指 出 不被 复制 的 变量 名。 Python 会 先 寻找 模块 内 的__ all__ 列表; 如果 没有 定义 的 话, from* 就会复制出 开头 没有单 下划线 的 所有 变量 名。