При написании функций мы можем иметь переменные, объявленные внутри тела функции. Например, если переменная name объявлена в функции, она считается новой переменной, которая полностью отличается от той, что объявлена вне функции:
name = 'Helen'
def greet():
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Helen
Переменная name объявлена в функции greet(), и ее область видимости простирается до конца этой функции. Переменные, объявленные внутри определенной области, обычно называются локальными переменными. Как только программа выходит из функции, она "забывает" об этой переменной.
Чтобы получить доступ и изменить переменные вне текущей области видимости, мы можем использовать ключевое слово global, чтобы сообщить Python, что мы хотим рассматривать эту переменную как глобальную:
name = 'Helen'
def greet():
global name
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Bob
В этот раз функция greet() изменила глобальную переменную name и установила ее значение в Bob.
Задача
Дана следующая функция. Попробуйте найти ошибку и исправить ее. Функция должна возвращать сумму значений, переданных ей до текущего момента.
total = 0
def compute_sum(val):
total = total + val
return val
print(compute_sum(10))
print(compute_sum(20))
print(compute_sum(30))