在另一个函数中定义变量后出现未定义错误

0 投票
1 回答
36 浏览
提问于 2025-04-13 19:33

我的开发环境(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

其他变量(divisionadditionsubtraction)的定义方式也差不多,甚至是一样的。

我试着重新命名这个变量,想看看是不是拼写错了。我不知道是什么原因导致这个问题,如果有人能帮我就太好了。作为一个初学者,我觉得这个问题的答案可能很简单,但我还不太明白。

1 个回答

0

变量存在于一个特定的范围内,除非你特别指定,否则这些变量不会在不同的范围之间传递。在这个名为 order 的函数范围内,有四个函数:addition(加法)、multiply(乘法)、subtraction(减法)和 division(除法)。注意,这些是函数,而不是变量。

因此,你在函数的范围内使用了变量 multiplied,而 order 的范围无法看到这个变量。现在,除法、减法和加法似乎可以正常工作,因为你使用的名字和 函数 的名字是一样的,但这并不是你可能想要访问的变量。

你确实在函数中返回了你的变量,但在 order 的范围内并没有把它们存储为任何东西。此外,如果输出是布尔值(真或假),你不需要写 if val == True,因为 if val 就可以了,因为 val 只有 TrueFalse 两种情况。

试试这个:

def order():
    div = division()
    add = addition()
    sub = subtraction()
    mult = multiply()

    if mult:
        pass
    if div:
        pass
    if add:
        pass
    if sub:
        pass

撰写回答