Python変数のスコープ
1868 ワード
キーワード:python;役割ドメインVariable Scope;
1、Pythonで変数の役割ドメインを変えることができるコードセグメントはdef、class、lamdaの3種類である.コードブロック:if/elif/else、try/except/finally、for/whileなど変数を変更しない役割ドメインは、その役割範囲外でも変数にアクセスできます.2、Python変数の検索順序はローカル変数---上位変数---グローバル変数である.
変数スコープ
コードの例:
変数の検索順序:
呼び出し順に従って逆方向に検索し、ローカル変数からグローバル変数、例えばinnerFuncでローカル変数を検索します.いいえ、1級scopetestに進み、ローカル変数var=6を発見し、出力します.
参考:Python Variable Scope Python変数の役割ドメイン
1、Pythonで変数の役割ドメインを変えることができるコードセグメントはdef、class、lamdaの3種類である.コードブロック:if/elif/else、try/except/finally、for/whileなど変数を変更しない役割ドメインは、その役割範囲外でも変数にアクセスできます.2、Python変数の検索順序はローカル変数---上位変数---グローバル変数である.
変数スコープ
コードの例:
def scopetest():
localvar=6;
print(localvar)
scopetest()
#print(localvar) # , localvar
while True:
newvar=8
print(newvar)
break;
print(newvar)
try:
newlocal=7
raise Exception
except:
print(newlocal) #
Out:
6
8
8
7
number = 5
def func0():
#It's OK to reference.
print number
def func1():
#new local variable.
number = 10
print number
def func2():
#global declaration.
global number
print number
number = 10
print number
print "Before calling any function, number is {}".format(number)
print "Calling func0()----------"
func0()
print "Calling func1()----------"
func1()
print "After calling func1(), number is {}".format(number)
print "Calling func2()----------"
func2()
print "After calling func2(), number is {}".format(number)
Out:
Before calling any function, number is 5
Calling func0()----------
5
Calling func1()----------
10
After calling func1(), number is 5
Calling func2()----------
5
10
After calling func2(), number is 10
変数の検索順序:
def scopetest():
var=6;
print(var)
def innerFunc():
print(var) #look here
innerFunc()
var=5
print(var)
scopetest()
print(var)
Out:
5
6
6
5
呼び出し順に従って逆方向に検索し、ローカル変数からグローバル変数、例えばinnerFuncでローカル変数を検索します.いいえ、1級scopetestに進み、ローカル変数var=6を発見し、出力します.
参考:Python Variable Scope Python変数の役割ドメイン