Проверка кода Pylint постоянно говорит: «Переопределение имени 'get_run_again' из внешней области видимости (строка 22) (redefined-outer-name)"? Что это значит - PullRequest
0 голосов
/ 26 октября 2019

Это моя основная и еще одна функция, проблема с которой

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

1 Ответ

0 голосов
/ 26 октября 2019

Это потому, что у вас есть локальное имя get_run_again в вашей функции get_run_again, которое имеет приоритет и скрывает глобальное имя, которое является именем самой функции. Это сбивает с толку интерпретатора.

Если вы измените имя переменной, чтобы оно отличалось от имени функции;эта ошибка исчезнет. [Или измените имя функции]

Другим [не очень хорошим] способом было бы объявить переменную get_run_again внутри функции как global, используя ключевое слово global.

...