У деяких мовах ви можете передавати параметр за посиланням або значенням, використовуючи спеціальне зарезервоване слово, наприклад ref або val . Коли ви передаєте параметр функції Python, він ніколи не змінює значення параметра при виході з функції. Єдиний спосіб зробити це - використання глобального зарезервованого слова (або, як я розумію на даний момент).
Приклад 1:
k = 2
def foo (n):
n = n * n #clarity regarding comment below
square = n
return square
j = foo(k)
print j
print k
показав би
>>4
>>2
показуючи, що k не змінюється
У цьому прикладі змінна n ніколи не змінюється
Приклад 2:
n = 0
def foo():
global n
n = n * n
return n
У цьому прикладі змінна n змінена
Чи є в Python спосіб викликати функцію і сказати Python, що параметр є або значенням, або посилальним параметром, замість використання глобального?
По-друге, на іспитах в Кембриджі рівня A вони зараз кажуть, що функція повертає одне значення, тоді як процедура повертає більше одного значення. Мене навчили, що функція має оператор return, а процедура - ні, протягом 80-х. Чому це зараз неправильно?