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