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の多用はプログラムの可読性や保守性を下げる原因にもなるため、実務では引数として値を受け渡し、戻り値で結果を返す設計の方が推奨される点には注意しましょう。
-
Python Matplotlibで多変量関数をプロットする方法
Pythonで多変量関数(複数の変数を持つ関数)を視覚的に表現したい場合、Matplotlibの散布図を活用すると、x・y・zの3つの変数の関係を1つのグラフ上で直感的に把握できます。ここでは、具体的な手順とサンプルコードを交えて解説します。実装の手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。NumPyを使って、ランダムな x、y、z のデータ点を生成します。図(figure)とサブプロット(axes)のセットを作成します。x・y・z のデータ点をもとに散布図を描画します。ScalarMappableインスタンス s に対してカラーバーを作成し、z値の色の対
-
PythonのMatplotlibでplt.title()に変数を組み込む方法
PythonのMatplotlibでplt.title()に変数を組み込みたい場合、いくつかの簡単なステップで実現できます。ここでは、変数numの値をグラフのタイトルに動的に反映させる方法を解説します。 実装の手順 numpyを使ってxとyのデータポイントを作成します。変数numを用いてyの値を計算し、この値をタイトルに設定します。 plot()メソッドを使って、xとyのデータポイントを赤色(c=red)でプロットします。 曲線のタイトルに変数numを含めて設定します。文字列フォーマット(%記法やf文字列)を活用することで、変数の値をタイトルに埋め込めます。 図を画面に表示するには、show