以下代码将报错 NameError: name 'b' is not defined
from concurrent.futures import ProcessPoolExecutor
def add(a):
return a+b
if __name__ == '__main__':
b = 3
with ProcessPoolExecutor() as executor:
test = executor.submit(add,5)
print(test.result())
但是如果你将 b = 3 移动到 if 语句之前,如下所示,它会运行而不会出错,为什么?
from concurrent.futures import ProcessPoolExecutor
def add(a):
return a+b
b = 3
if __name__ == '__main__':
with ProcessPoolExecutor() as executor:
test = executor.submit(add,5)
print(test.result())
顺便说一句,在函数中定义像 b 这样的全局变量的最佳实践是什么?