以下打印
{'a': 'a', 'b': 'b'}
:
def foo(a: str = "a", b: str = "b") -> None:
print(locals())
foo() # Prints {'a': 'a', 'b': 'b'}
我期望在 Python 3.7+ 中
locals
返回创建的顺序。
但是下面的打印内容{'b': 'b', 'a': 'a'}
def foo(a: str = "a", b: str = "b") -> None:
print(locals())
lambda: a
foo() # Prints {'b': 'b', 'a': 'a'}
看起来它延迟了变量创建的顺序,这很奇怪。这是为什么?啊,这只发生在 3.10 及更低版本。我猜这是一个Python问题,如果有人能找到相关的GitHub问题,请分享。