内部函数访问外部变量搞蒙了
1.内部函数,不修改全局变量可以访问全局变量
a = 10
def test():
b = a + 2 #仅仅访问全局变量 a
print(b)
test()
输出结果为:
12
2.内部函数,修改同名全局变量,则python会认为它是一个局部变量(同教程最后一个例子)
#!/usr/bin/python3
a = 10
def test():
a = a + 1 #修改同名的全局变量,则认为是一个局部变量
print(a)
test()
3.在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError
参考
https://www.runoob.com/note/34820
4.import a.b as b1
import b as b2
from a.b import var1
b模块包含var1 全局变量 三种方式获得的var1变量不同!注意导入方式
但 import a.b as b1 与 from a import b as b4 两种var1 相同
添加模块搜索路径
为了解决上述问题,需要添加模块搜索路径,可以使用以下几种方式:
1.动态增加路径
临时生效,对于不经常使用的模块,这通常是最好的方式,因为不必用所有次要模块的路径来污染 PYTHONPATH。
2.修改 PYTHONPATH 变量
永久生效,对于在许多程序中都使用的模块,可以采用这种方式。这将改变所有 Python 应用的搜索路径,因为启动 Python 时,它会读取这个变量,甚至不同版本的 Python 都会受影响。
3.增加 .pth 文件
永久生效,这是最简单的、也是推荐的方式。Python 在遍历已知的__特定目录__过程中,如果遇到 .pth 文件,便会将其中的路径加入到 sys.path 中,于是 .pth 中所指定的路径就可以被 Python 运行环境找到了。
上面提到的__特定目录__是通过site
模块下的getsitepackages
方法获得的,该方法返回一个路径组成的list:
import site
site.getsitepackages()
4. 关于几个路径
参看https://blog.csdn.net/rayouwo/article/details/89294214
参考:https://www.cnblogs.com/lipijin/p/4445301.html
https://www.jb51.net/article/133925.htm
4.配置类构造以及单例模式
https://www.cnblogs.com/huchong/p/8244279.html
参考https://www.bbsmax.com/A/KE5QwMGZzL/
这里讨论如何判断 key(键) 或者 value(值)是否在枚举中
from enum import Enum
class testEnum(Enum):
key1 = 0
key2 = 1
"key1" in testEnum.__members__
0 in testEnum._value2member_map_