global_config = None
def func(config=global_config["a"]):
print(1)
def func2():
print(2)
func2()
上面这段代码是会报错的,报错信息如下:
File xx.py, line 4, in <module>
def func(config=global_config["a"]):
~~~~~~~~~~~~~^^^^^
TypeError: 'NoneType' object is not subscriptable
很反直觉对吧,明明没有用到func怎么还报错呢。
原因
仔细想想也合理。
python文件执行每一行代码,遇到def就记住这个函数变量。这里很正常。
但同时,它还会计算一下这个函数的默认的参数。