***
1958 ワード
1.グローバル変数とローカル変数の定義:
グローバル変数は
全範囲で呼び出せる変数
ローカル変数は関数の内部で呼び出すことができます.
関数が全体に出ると呼び出せない変数を局所変数と呼ぶ
関数だけが自分の「体内」に含まれるものを「局所化」することができる.
例:
2.ローカル変数をグローバル変数に変更するにはどうすればいいですか?
上の例では,name=「梁非凡」の前に一言を加えた.
global name
これでnameという局所変数をグローバル変数に変えることができます
ここのglobalはただ1つのチャネルを与えて、関数の内部がこのチャネルを通じてglobalの後ろのグローバル変数に連絡することができます
関数の内部にあるものは、一般的にパラメータを呼び出したり、別のことをしたりしたいのですが、
いずれも関数内部から優先的に探して、見つからないでやっと全局を探します(家で食べ物を食べたいようで、きっと先に家で食べ物を探して、見つからないでやっと食べ物を探しに出かけます)
例:
最後に、関数のネスト関数にglobalキーワードを使用した場合、
pythonは、前の関数の変数ではなく、最外層のグローバル変数を探します.
前のレベルの関数の変数を呼び出す場合は、キーワードを使用します.
nonlocal
3.提案:変数を宣言する時、グローバルグローバル変数の変数名にローカル変数の変数名に対して異なるものを与えて、それらの名前を異なるようにしたほうがよくて、このようにローカル変数とグローバル変数を区別しやすい
4.ネスト関数の実行順序
ネスト関数もpythonの基本法に従って実行され、前から後までインデントで実行されますが、比較的複雑なので言う価値があります
例:
ここでの実行手順は、1-13-3-4-12-6-7-11-9-10-14であるべきである.
グローバル変数は
全範囲で呼び出せる変数
ローカル変数は関数の内部で呼び出すことができます.
関数が全体に出ると呼び出せない変数を局所変数と呼ぶ
関数だけが自分の「体内」に含まれるものを「局所化」することができる.
例:
name = 'capture' # name
def test():
name = ' ' # name
print(name)
test()
print(name) # name capture, name, ,
2.ローカル変数をグローバル変数に変更するにはどうすればいいですか?
上の例では,name=「梁非凡」の前に一言を加えた.
global name
これでnameという局所変数をグローバル変数に変えることができます
ここのglobalはただ1つのチャネルを与えて、関数の内部がこのチャネルを通じてglobalの後ろのグローバル変数に連絡することができます
関数の内部にあるものは、一般的にパラメータを呼び出したり、別のことをしたりしたいのですが、
いずれも関数内部から優先的に探して、見つからないでやっと全局を探します(家で食べ物を食べたいようで、きっと先に家で食べ物を探して、見つからないでやっと食べ物を探しに出かけます)
例:
def test1():
global name
print(name)
def test2():
name = '123'
print(name)
test1()
test2()
ここのようにtest 1()はすでにnameをグローバル変数に引用しているがtest 2()では基本法に従って局所変数のname='123'を優先的に探している.最後に、関数のネスト関数にglobalキーワードを使用した場合、
pythonは、前の関数の変数ではなく、最外層のグローバル変数を探します.
前のレベルの関数の変数を呼び出す場合は、キーワードを使用します.
nonlocal
3.提案:変数を宣言する時、グローバルグローバル変数の変数名にローカル変数の変数名に対して異なるものを与えて、それらの名前を異なるようにしたほうがよくて、このようにローカル変数とグローバル変数を区別しやすい
4.ネスト関数の実行順序
ネスト関数もpythonの基本法に従って実行され、前から後までインデントで実行されますが、比較的複雑なので言う価値があります
例:
x = ' 0 ' #1
def a1(): #2
x = ' ' #3
print(x) #4
def a2(): #5
x = ' ' #6
print(x) #7
def a3(): #8
x = ' ' #9
print(x) #10
a3() #11
a2() #12
a1() #13
print(x) #14
ここでの実行手順は、1-13-3-4-12-6-7-11-9-10-14であるべきである.