【问题标题】:Pylint code checker keeps saying "Redefining name 'get_run_again' from outer scope (line 22) (redefined-outer-name)"? What does this meanPylint 代码检查器一直说“从外部范围重新定义名称'get_run_again'(第 22 行)(重新定义的外部名称)”?这是什么意思
【发布时间】:2020-02-22 09:03:53
【问题描述】:

这是我的主要功能和另一个一直有问题的功能

def main():
    """
    Main algorithm to calculate monthly budget
    """

    # To run again variable
    run_again = 'Y'

    # Expense variables, 0 to quit
    while run_again == 'Y':
        total_budget = budget()
        expense_val = expense()
        while expense_val != 0:
            total_budget = total_budget - expense_val
            expense_val = expense()

        print('The leftover budget is $', '%0.2f' % total_budget, sep='')

        run_again = get_run_again()


def get_run_again():
    """
    Asks the user to validate Yes and No

    arguments:
    None

    Returns:
    Yes and No
    """
    # Ask to enter Y for "yes, run again" or N for "no, quit"
    get_run_again = str(input('Y for yes,or N for no: '))

    # Ask user to user to validate yes or no
    while get_run_again != 'Y' and get_run_again != 'N':
        print('Run again?')
        get_run_again = str(input())

    return get_run_again

【问题讨论】:

    标签: python pylint


    【解决方案1】:

    这是因为您的 get_run_again 函数中有一个本地名称 get_run_again,它优先并隐藏了作为函数本身名称的全局名称。这让解释器感到困惑。

    如果将变量名更改为与函数名不同;这个错误会消失。 [或者改函数名]

    另一种 [不是好的] 方法是使用 global 关键字将函数内的 get_run_again 变量声明为 global

    【讨论】:

      猜你喜欢
      • 2018-02-15
      • 1970-01-01
      • 2019-09-10
      • 2013-12-06
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多