一部の言語では、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レベルのケンブリッジ試験では、関数は単一の値を返すのに対し、プロシージャは複数の値を返すと言われています。80年代に、関数にはreturnステートメントがあり、プロシージャにはないことを教えられました。なぜこれが正しくないのですか?