変数のスコープとは、変数が有効な領域を指します。これは、関数を使用するときに、一部の変数がメイン プログラムで定義され、一部の変数がメイン プログラムで関数を使用するときに定義されるためです。変数を指定すると例外が発生します。ローカル変数とグローバル変数を紹介します。
ローカル変数は、その名のとおり、ローカル領域で動作する変数です。関数内で変数が定義されている場合、その関数内でのみ動作します。関数内の変数を関数外で使用すると例外が発生します。 。
次の例を見てください。
deftest():data='ローカル変数'print('関数内のデータを出力:',data)test()print('メインプログラム内のデータを出力:',data)
出力は次のとおりです。
関数内のデータ出力は次のとおりです。ローカル変数 Traceback(mostrecentcalllast):FileC:/Users/Qingyan/PycharmProjects/untitled/venv/Include/ts.py,line6,in<module>print('メイン プログラムの出力データ: ',data)NameError:name'data' が定義されていません
変数データは関数内で定義されているため、メインプログラムで変数データを使用する場合、アクセス中の変数が存在しないという問題が発生するため、関数内で定義された変数に注意する必要があります。関数はローカル変数です。特に宣言しない限り、関数の外ではアクセスできません。
グローバル変数は、グローバルに動作する変数であるという文字通りの意味から理解することもできます。グローバル変数はメイン プログラムで定義された変数でなければならないと自然に考える人もいるでしょう。実際には、グローバル変数は関数内で動作することもできます。グローバル変数を使用する 2 つの方法:
メイン プログラムで定義する変数のスコープはグローバルであり、これらの変数を定義された関数で直接使用することもできます。次の例を参照してください。
data='グローバル変数 data'deftest():print('これは関数内で動作するグローバル変数です:',data)test()print('これは関数外で動作するグローバル変数です:',data)
出力結果:
これは関数内で動作するグローバル変数です: グローバル変数データ これは関数の外部で動作するグローバル変数です: グローバル変数データ
このメソッドは通常使用するグローバル変数で、メイン プログラムで定義した変数は関数内で直接使用できます。
関数内で定義する変数は、グローバル変数としてプログラムすることもできます。このとき、global キーワードを使用する必要があります。
まず、グローバル変数とローカル変数の名前が同じ場合に何が起こるかを見てみましょう。次の例を見てください。
data='ここにグローバル変数があります data'print(data)deftest():data='ここにローカル変数があります data'print(data)test()print('グローバル変数のデータをもう一度確認してください:',data)
出力は次のとおりです。
ここにグローバル変数のデータがあります。 ここにローカル変数のデータがあります。 もう一度グローバル変数のデータを確認してください。
この例から、グローバル変数とローカル変数の名前が同じ場合、グローバル変数の内容には影響しないことがわかりますが、関数内でグローバル変数の値を変更したい場合は、 global キーワードを使用する必要があります。
次の例をもう一度見てください。
data='ここにグローバル変数 data'print(data)deftest():globaldatadata='ここにローカル変数 data'print(data)test()print('グローバル変数データを再度確認してください:',data)
出力は次のとおりです。
ここにグローバル変数データがあります。 ここにローカル変数データがあります。 もう一度グローバル変数データを確認してください。 ここにローカル変数データがあります。
global キーワードを通じて、local 宣言は、global がグローバル変数であることを関数に伝えます。global キーワードは、変数をグローバル変数にすることができます。
グローバルに宣言された変数がない場合は、global キーワードをローカルで使用して変数をグローバル変数として直接宣言することもでき、関数内で定義した変数をメイン プログラムでも使用できます。
deftest():globaldatadata='これはローカルで作成された変数データです'print('これは関数の出力です:',data)test()print('これはメインプログラムの出力です:',data)
出力は次のとおりです。
これは関数の出力です。 これはローカルで作成された変数データです。 これはメイン プログラムの出力です。 これはローカルで作成された変数データです。
上記の例を通して、グローバル変数を制御する際の global キーワードの役割を理解することができます。また、プログラムを作成する際には、グローバル変数とローカル変数が異なる動作をするにもかかわらず、それらの名前が同じになることを避けるように注意する必要があります。領域間の相互作用に影響を与えます。このセクションはこれで終わりです。次のセクションで匿名関数について学びましょう。