我偶然发现一个奇怪的问题。我将其范围缩小到下面几行,只是为了准确地关注正在发生的事情,因此,请不要介意这段代码的目的。
代码是:
dictionary = {
'key': 'value'
}
class Test:
a = {**dictionary}
b = dictionary['key']
c = {i: dictionary[i] for i in dictionary}
运行没有任何问题。
如果我将其更改为:
class Test:
dictionary = {
'key': 'value'
}
a = {**dictionary}
b = dictionary['key']
c = {i: dictionary[i] for i in dictionary}
我会得到这个:
追踪(最近通话):
文件“ /home/PythonTest.py”,第2行,在类测试:
文件“ /home/PythonTest.py”,测试中的第12行c = {i:字典中的i的dictionary [i]}
文件“ /home/PythonTest.py”,第12行,在c = {i:字典中的i的dictionary [i]}
NameError:未定义名称'dictionary'
为什么仅在第三次分配时抛出NameError?调试时,我看到对变量a和b的赋值工作正常。