Funções do Python chamam por referência

Em alguns idiomas você pode passar um parâmetro por referência ou valor usando uma palavra reservada especial comoref ouval. Quando você passa um parâmetro para uma função Python, ele nunca altera o valor do parâmetro ao sair da função. A única maneira de fazer isso é usando o parâmetro.global palavra reservada (ou como entendi atualmente).

Exemplo 1:

k = 2

def foo (n):
     n = n * n     #clarity regarding comment below
     square = n
     return square

j = foo(k)
print j
print k

mostraria

>>4
>>2

mostrando k para ser imutável

Neste exemplo, a variável n nunca é alterada

Exemplo 2:

n = 0
def foo():
    global n
    n = n * n
    return n

Neste exemplo, a variável n é alterada

Existe alguma maneira no Python para chamar uma função e dizer ao Python queo parâmetro é tambémum valor oureferência parâmetro em vez de usar global?

Em segundo lugar, nos exames Cambridge de nível A, eles agora dizem que uma função retorna umsolteiro valor enquanto um procedimento retornamais de um valor. Eu fui ensinado que uma função tem uma declaração de retorno e o procedimento não, durante os anos 80. Por que isso está incorreto agora?

questionAnswers(9)

yourAnswerToTheQuestion