В некоторых языках вы можете передать параметр по ссылке или по значению, используя специальное зарезервированное слово, например 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, что параметр является либо значением, либо параметром ссылки вместо использования global?
Во-вторых, на кембриджских экзаменах уровня A теперь говорится, что функция возвращает одно значение, а процедура возвращает более одного значения. В 80-х годах меня учили, что функция имеет оператор возврата, а процедура - нет. Почему сейчас это неверно?