我正在尝试构建一个转换计算器,我相信我说得对,但我一直在
“UnboundLocalError:在赋值之前引用的局部变量'F2C'
这是否意味着我使用了错误的密钥?或者这是否意味着我编写函数的顺序是问题? 当我运行代码时,代码的开始部分正常工作,但我无法弄清楚错误试图告诉我的内容。
以下是代码部分:
def select():
displayMenu();
choice = input ('Enter choice number:')
if (choice == 1):
F2C();
elif (choice == 2):
C2F();
elif (choice == 3):
I2C();
elif (choice == 4):
C2I();
elif (choice == 5):
G2L();
elif (choice == 6):
L2G();
elif (choice == 7):
Y2M();
elif (choice == 8):
M2Y();
elif (choice == 9):
P2K();
elif (choice == 10):
K2P();
我使用的语法不正确吗?
答案 0 :(得分:3)
主要问题是F2C
未在您可以访问的任何地方定义。
这在您向我们展示的片段中很明显......但在您的真实代码中,可能是它已定义某处。问题在于无论在何处定义,它都不在此模块的全局变量中。最有可能的是:
import other_module
- 在这种情况下,该函数名为other_module.F2C
,而不是F2C
。F2C
分配了一些其他值。再次,可能是偶然(通过缩进你的缩进)。当你在这个函数中说F2C
时,Python会猜测你想要使用局部变量而不是全局函数。但是尚未分配局部变量。它特别是UnboundLocalError
而不是NameError
这一事实是一个有用的线索:它意味着Python认为这应该是一个局部变量而不是全局变量,这几乎肯定意味着你要么定义它或者在同一个函数中为F2C
分配一个值 ...很可能是因为你在这个函数中缩进了一堆其余的脚本。
答案 1 :(得分:1)
UnboundLocalError
表示F2C
在本地定义之前使用 ,即
示例:
def f():
print(a) # assuming there is no global `a`; it raises UnboundLocalError
a = 1