这可能更适合讨论组,但我不精通语言的内部(甚至语言本身)。无论如何,困扰我的是:
如果python允许使用关键字对外部范围进行干扰(副作用)nonlocal
,那么为什么不允许通过引用传递参数来允许对函数参数进行类似的干扰:
现在可能:
>>> def outer():
x = 1
def inner():
nonlocal x
x = 2
print("inner:", x)
inner()
print("outer:", x)
>>> outer()
inner: 2
outer: 2
为什么不 - 或者如果我们有什么可能出错:
>>> def outer():
x = 1
def inner(byref x):
x = 2
print("inner:", x)
inner(x)
print("outer:", x)
>>> outer()
inner: 2
outer: 2
(使用一些关键字,如 'byref' 或 'nonlocal,仅用于说明)。