最初のコードではローカル変数を作成してvar
その値を使用しているのに対し、2番目のコードではローカル変数var
を定義せずに使用しているためです。
したがって、2番目の関数を機能させたい場合は、次のように宣言する必要があります:-
global var
を使用する前に関数でvar
。
def func(num):
print num
var = 1 <-- # You create a local variable
if num != 0:
func(num-1)
一方、このコードでは:
def func(num):
print num
var = var <--- # You are using the local variable on RHS without defining it
if num != 0:
func(num-1)
更新:-
ただし、@ Timのコメントによるとglobal
、関数内で変数を使用しないでください。変数を使用する前に、変数を定義して、で使用しlocal scope
ます。一般に、limit
変数のスコープをに、名前空間local
でもローカル変数のスコープにしようとする必要があります。そうすることで、コードが理解しやすくなります。local
limit
変数の範囲を拡大すればするほど、使用する必要のない外部ソースで使用される可能性が高くなります。