【发布时间】:2020-07-04 05:47:04
【问题描述】:
我注意到 Python 中的以下行为:
>>> class foo:
... def __init__(self, x=0):
... self.x = x
... def bar(self):
... self.x = self.x + 1
...
>>> def f(a=foo()):
... a.bar()
... return a
...
>>> c = f()
>>> c.x
1
>>> d = f()
>>> d.x
2
>>> d == c
True
好像变量 a 变成了全局变量,这不是真的,但仍然调用方法 f 变量 a 没有像我预期的那样重新实例化。
这背后的原因是什么?
【问题讨论】:
-
这是Python的设计决定,它只在处理“f”的函数定义时处理一次,而不是每次调用。