我不明白允许局部函数访问全局作用域中定义的变量的好处,除非明确定义。由于问题的性质,当命名约定相似时,这似乎可能会引入一些难以跟踪的错误,如果全局变量仅对局部函数范围可用,如果明确定义为所以?
示例代码(简化):
def train(acc):
acc += 1
return acc
def infer(acc):
acc += 2
return accuracy
accuracy = train(1)
accuracy2 = infer(5)
print("train",accuracy,"inference",accuracy2)
实际python返回>>> train 2 inference 2
个人意见预期回报 >>> Error: Function infer() does not have variable named accuracy
当用户错误地返回 accuracy
中的 infer()
(来自全局作用域)而不是局部函数作用域变量中的 acc
时,会出现此“错误”。我最近发生了这种情况,因为我正在复制大量代码,但忘记更改函数中的返回变量名称。不幸的是,在全局作用域中有一个同名的变量!
为什么 Python 不强制用户在函数中显式定义全局变量,以便每个人都清楚实际使用全局变量的意图?示例:
def train(acc):
acc += 1
return acc
def infer(acc):
global accuracy
acc = accuracy + acc
return acc
accuracy = train(1)
accuracy2 = infer(5)
print(accuracy,accuracy2) >>> 2 7
为了讨论的目的,给出的代码示例过于简化。