在另一个函数中定义变量后出现未定义错误
我的开发环境(IDE)告诉我,变量 multiplied
没有被定义:
def multiply():
surrounding_x()
multiplied = False
x_index = chars.index("x")
before_x = chars[x_index - 1]
after_x = chars[x_index + 1]
num = 2
while num <= 50:
if int(before_x) == num:
print("X is being multiplied by " + str(num) + ".")
multiplied = True
return multiplied
break
else:
num += 1
if num == 50:
print('X is not being multiplied. ')
这是我把变量 multiplied
定义为 True
的地方。
def order():
division()
addition()
subtraction()
multiply()
if multiplied == True:
pass
if division == True:
pass
if addition == True:
pass
if subtraction == True:
pass
其他变量(division
、addition
和 subtraction
)的定义方式也差不多,甚至是一样的。
我试着重新命名这个变量,想看看是不是拼写错了。我不知道是什么原因导致这个问题,如果有人能帮我就太好了。作为一个初学者,我觉得这个问题的答案可能很简单,但我还不太明白。
1 个回答
0
变量存在于一个特定的范围内,除非你特别指定,否则这些变量不会在不同的范围之间传递。在这个名为 order
的函数范围内,有四个函数:addition
(加法)、multiply
(乘法)、subtraction
(减法)和 division
(除法)。注意,这些是函数,而不是变量。
因此,你在函数的范围内使用了变量 multiplied,而 order
的范围无法看到这个变量。现在,除法、减法和加法似乎可以正常工作,因为你使用的名字和 函数 的名字是一样的,但这并不是你可能想要访问的变量。
你确实在函数中返回了你的变量,但在 order
的范围内并没有把它们存储为任何东西。此外,如果输出是布尔值(真或假),你不需要写 if val == True
,因为 if val
就可以了,因为 val
只有 True
或 False
两种情况。
试试这个:
def order():
div = division()
add = addition()
sub = subtraction()
mult = multiply()
if mult:
pass
if div:
pass
if add:
pass
if sub:
pass