Получают ли переменные, созданные внутри функции, глобальную область видимости? - PullRequest
1 голос
/ 15 июня 2019

У меня есть простая функция, содержащая цикл, который вычисляет, как деньги растут в год с процентами, что заставило меня задуматься о области видимости и переменных в Python.

def invest(amount, rate, years):
    for i in range(years):
        amount = amount + amount*rate
        print(f"year {i+1}: ${amount:.2f}")


invest(100, 0.05, 4)

Вывод:

year 1: $105.00
year 2: $110.25
year 3: $115.76
year 4: $121.55

Я знаю, что это работает, но обычно я создаю переменную 'amount' над циклом for, чтобы гарантировать, что после каждой итерации эта переменная будет обновляться.Поскольку в этот раз я этого не делал, я предполагаю, что эта переменная создается глобально, так что это происходит автоматически.

Верны ли мои предположения?Спасибо

Ответы [ 2 ]

4 голосов
/ 15 июня 2019

Если бы он был глобальным, то вы могли бы получить к нему доступ вне функции.Область действия переменной ограничена этой конкретной функцией.

Вы также можете создать другую промежуточную переменную над циклом, но это не сильно изменит функцию - вам не нужно исходное значение amount в вашей функции, поэтому для ваших целей - использование этой переменнойи обновление его прямо в вашем цикле - это нормально.

1 голос
/ 15 июня 2019

Ответ выше уже удовлетворяет тому, что вы просили, но я думаю, что следующая ссылка может быть полезной для вашего обучения, так же как и для моей.В Python Tutor вы можете поместить свой код и визуализировать то, что происходит внутри глобальной области видимости, областей действия функций и т. Д. Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...