Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの関数における変数スコープの仕組みとは?globalキーワードの使い方も解説

Pythonでは、変数は値を代入した時点で定義されます。C言語など多くの言語とは異なり、事前に宣言しておく必要はなく、いきなり変数を使い始めることができるのが特徴です。

x = 141

ファイルやモジュールのトップレベル(最上位)で定義された変数は「グローバルスコープ」に属し、関数の中からもアクセスできます。

なお、良い設計の原則として、変数はその役割を果たすために必要な最小限のスコープにとどめておくことが推奨されています。

例:ローカル変数とグローバル変数の違い

次のコードを見てみましょう。

x = 141

def foo():
    x = 424  # ローカル変数
    print(x)

foo()
print(x)

出力

424
141

解説

関数fooの中でxに424を代入すると、実際にはその関数のローカルスコープ内に新しいローカル変数xが作成されます。このxは、グローバルスコープにあるxとはまったく無関係な別の変数です。関数の実行が終了すると、値424を持つこのローカル変数は消滅します。そのため、2つ目のprint(x)が実行される時点では、グローバル変数xの値である141が出力されるのです。

globalキーワードでグローバル変数を更新する

ローカルスコープ内からグローバル変数そのものを書き換えたい場合は、「global」キーワードを使用します。

x = 141

def foo():
    global x
    x = 424
    print(x)

foo()
print(x)

出力

424
424

このようにglobalキーワードを付けて宣言することで、関数内での代入がグローバル変数xに対して行われるため、関数実行後も値424が保持されます。

ただし、globalの多用はプログラムの可読性や保守性を下げる原因にもなるため、実務では引数として値を受け渡し、戻り値で結果を返す設計の方が推奨される点には注意しましょう。

  1. Python Matplotlibで多変量関数をプロットする方法

    Pythonで多変量関数(複数の変数を持つ関数)を視覚的に表現したい場合、Matplotlibの散布図を活用すると、x・y・zの3つの変数の関係を1つのグラフ上で直感的に把握できます。ここでは、具体的な手順とサンプルコードを交えて解説します。実装の手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。NumPyを使って、ランダムな x、y、z のデータ点を生成します。図(figure)とサブプロット(axes)のセットを作成します。x・y・z のデータ点をもとに散布図を描画します。ScalarMappableインスタンス s に対してカラーバーを作成し、z値の色の対

  2. PythonのMatplotlibでplt.title()に変数を組み込む方法

    PythonのMatplotlibでplt.title()に変数を組み込みたい場合、いくつかの簡単なステップで実現できます。ここでは、変数numの値をグラフのタイトルに動的に反映させる方法を解説します。 実装の手順 numpyを使ってxとyのデータポイントを作成します。変数numを用いてyの値を計算し、この値をタイトルに設定します。 plot()メソッドを使って、xとyのデータポイントを赤色(c=red)でプロットします。 曲線のタイトルに変数numを含めて設定します。文字列フォーマット(%記法やf文字列)を活用することで、変数の値をタイトルに埋め込めます。 図を画面に表示するには、show