最初のコードではローカル変数を作成して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でもローカル変数のスコープにしようとする必要があります。そうすることで、コードが理解しやすくなります。locallimit
変数の範囲を拡大すればするほど、使用する必要のない外部ソースで使用される可能性が高くなります。