ホームページ >バックエンド開発 >Python チュートリアル >Python で変数のスコープを使用する方法
変数のスコープとは、プログラムコードが変数にアクセスできる領域のことであり、この領域を超えると再度アクセスするとエラーになります。プログラムでは、変数は一般的に「有効範囲」に基づいて「グローバル変数」と「ローカル変数」に分けられます。
ローカル変数とは、関数内で定義および使用される変数を指し、関数内でのみ有効です。つまり、関数内の名前は関数の実行時にのみ作成され、関数の実行前または実行後はすべての名前が存在しなくなります。したがって、関数内で定義した変数を関数外で使用すると、NameError 例外がスローされます。
たとえば、function という名前の関数を定義し、関数内で変数詩 (ローカル変数と呼ばれます) を定義し、それに値を代入してから変数を出力し、最後に関数の外で詩変数を再度出力します。 body のコードは次のとおりです。
def function(): poem = '面朝大海,春暖花开' print('局部变量poem = ', poem) # 输出局部变量的值 function() # 调用函数 print('局部变量poem = ', poem) # 在函数体外输出局部变量的值
上記のコードを実行すると、次の図に示すような例外が表示されます。
はローカル変数に対応しており、関数内外で動作する変数です。グローバル変数には主に以下の 2 つの状況があります。
(1) 変数が関数の外で定義されている場合、関数の外だけでなく関数内からもアクセスできます。関数本体の外で定義された変数はグローバル変数です。
たとえば、グローバル変数poemを定義し、その関数内でグローバル変数poemの値を出力する関数を定義します。コードは次のとおりです:
poem = '花有重开日,人无再少年' # 全局变量 def function(): print('函数体内:全局变量poem =', poem) # 在函数体内输出全局变量的值 function() # 调用函数 print('函数体外:全局变量poem =', poem) # 在函数体外输出全局变量的值
上記のコードを実行します。を実行すると、次の内容が表示されます。
関数内: グローバル変数詩 = 花は再び咲き、人は二度と若くなくなる
関数外: グローバル変数詩 = 花は若返る
説明:ローカル変数とグローバル変数が同じ名前の場合、変数に値を代入する関数本体内の変数は、関数本体の外側の変数には影響しません。つまり、全員が自分の鉦を打ち、全員が自分の太鼓を打ちます。
たとえば、関数本体の外側でグローバル変数 a を定義して値 100 を割り当て、関数本体の内側でローカル変数 a を定義して値 10 を割り当てます。コードは次のとおりです。
a = 100 # 定义一个全局变量 def function(): a = 10 # 定义局部变量 print(a) # 输出局部变量的值 function() # 调用函数 print(a) # 输出全局变量的值
実行結果は以下の通りです:
10100
(2) 関数本体で定義し、 global キーワードを指定すると、変数はグローバル変数になります。変数は関数本体の外部からアクセスすることも、関数本体の内部で変更することもできます。
たとえば、関数本体で変数を定義し、global キーワードを使用してそれを変更します。コードは次のとおりです:
poem = '天若有情天亦老,人间正道是沧桑' # 全局变量 print('函数体外:poem =', poem) # 在函数体外输出全局变量的值 def function(): global poem # 将poem声明为全局变量 poem = '人生得意须尽欢,莫使金樽空对月' # 全局变量 print('函数体内:poem =', poem) # 在函数体内输出全局变量的值 function() # 调用函数 print('函数体外:poem =', poem) # 在函数体外输出全局变量的值
上記のコードを実行すると、次の内容が表示されます:
試験管内関数: 詩 = 空が感傷的であれば、空も同様に歳を重ねる、そして世界の正しい道は人生の浮き沈みである
体内の機能: 詩 = 人生を誇りに思うなら、すべての喜びを手に入れなければならない、金の杯を月まで空にするな
体外の機能: 詩 = 人生に誇りを持っているなら、すべての喜びを手に入れなければなりません、金の杯を月まで空にするな
上から見るとそれが見えますこの結果から、globalキーワードで変更したグローバル変数は関数本体内のグローバル変数の値を変更できることが分かりました。
Note:Python ではグローバル変数とローカル変数に同じ名前を付けることができますが、実際の開発ではそうすることはお勧めできません。コードが混乱しやすくなり、どれがグローバル変数でどれがローカル変数であるかを区別するのは困難です。
以上がPython で変数のスコープを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。