W niektórych językach można przekazać parametr przez odniesienie lub wartość, używając specjalnego słowa zastrzeżonego, takiego jak ref lub val . Kiedy przekazujesz parametr do funkcji Pythona, nigdy nie zmienia wartości parametru przy opuszczaniu funkcji. Jedynym sposobem na to jest użycie globalnego słowa zastrzeżonego (lub jak rozumiem to obecnie).
Przykład 1:
k = 2
def foo (n):
n = n * n #clarity regarding comment below
square = n
return square
j = foo(k)
print j
print k
pokaże
>>4
>>2
pokazując, że k nie zmienia się
W tym przykładzie zmienna n nigdy nie jest zmieniana
Przykład 2:
n = 0
def foo():
global n
n = n * n
return n
W tym przykładzie zmienna n została zmieniona
Czy w Pythonie jest jakiś sposób na wywołanie funkcji i poinformowanie Pythona, że parametr jest albo wartością, albo parametrem odniesienia , zamiast używać wartości globalnej?
Po drugie, na egzaminach Cambridge na poziomie A mówi się, że funkcja zwraca jedną wartość, podczas gdy procedura zwraca więcej niż jedną wartość. W latach 80-tych uczono mnie, że funkcja ma instrukcję powrotu, a procedura nie. Dlaczego jest to teraz niepoprawne?