ホームページ  >  記事  >  バックエンド開発  >  Python で変数のスコープを使用する方法

Python で変数のスコープを使用する方法

王林
王林転載
2023-05-12 15:01:061373ブラウズ

はじめに

変数のスコープとは、プログラムコードが変数にアクセスできる領域のことであり、この領域を超えると再度アクセスするとエラーになります。プログラムでは、変数は一般的に「有効範囲」に基づいて「グローバル変数」と「ローカル変数」に分けられます。

1. ローカル変数

ローカル変数とは、関数内で定義および使用される変数を指し、関数内でのみ有効です。つまり、関数内の名前は関数の実行時にのみ作成され、関数の実行前または実行後はすべての名前が存在しなくなります。したがって、関数内で定義した変数を関数外で使用すると、NameError 例外がスローされます。

たとえば、function という名前の関数を定義し、関数内で変数詩 (ローカル変数と呼ばれます) を定義し、それに値を代入してから変数を出力し、最後に関数の外で詩変数を再度出力します。 body のコードは次のとおりです。

def function():
    poem = '面朝大海,春暖花开'
    print('局部变量poem = ', poem)  # 输出局部变量的值
function()  # 调用函数
print('局部变量poem = ', poem)  # 在函数体外输出局部变量的值

上記のコードを実行すると、次の図に示すような例外が表示されます。

Python で変数のスコープを使用する方法

2. グローバル変数

はローカル変数に対応しており、関数内外で動作する変数です。グローバル変数には主に以下の 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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。