現在の見出し:6.4節:変数スコープと名前解決
見出し一覧
- 6.4節:変数スコープと名前解決
- - Pythonのスコープとは
- - スコープの操作
- - 6.4節の演習問題
【PR】『Python』を学べる企業・個人向けのプログラミングコース
Pythonマスター講座第6章 6.4節で学べること
- スコープスコープはプログラミングで変数や識別子の可視性や寿命を決定する概念で、コード内のどの部分からアクセスできるかを定めます。の概念と種類
- スコープの操作方法
Pythonのスコープとは
スコープとは、プログラムプログラムはコンピュータに対して何をすべきかを指示する一連の命令です。内で変数変数はデータを一時的に記憶しておく場所です。が参照できる範囲のことで、定義した場所によって「変数がアクセスできる範囲」が決まります。
ローカルスコープ
ローカルスコープとは、関数関数は一定の処理をまとめたプログラムの塊です。の内部で定義された変数が使用できる範囲のことです。関数内で作成された変数は、その関数の中でだけ参照でき、関数の外部からはアクセスできません。
例えば、関数内でx = 10
と書くと、このx
はその関数内でのみ使用できます。関数の処理が終わるとこの変数は消えるため、他の関数で同じ変数名を使っても、それぞれ別の変数として扱われます。
def function_a():
x = 10
print("関数A内のx:", x)
def function_b():
x = 20
print("関数B内のx:", x)
function_a()
function_b()
関数A内のx: 10
関数B内のx: 20
行数 | コード | 解説 |
---|---|---|
1行目 | def function_a(): | function_aという名前の関数を定義 |
2行目 | x = 10 | function_a内でローカル変数ローカル変数はプログラミングで特定のブロックやメソッド内でのみ有効な変数で、スコープを抜けると自動的に破棄されます。xに10を代入代入は変数に値を割り当てる操作です。 |
3行目 | print("関数A内のx:", x) | function_a内のローカル変数xの値を表示 |
5行目 | def function_b(): | function_bという名前の関数を定義 |
6行目 | x = 20 | function_b内でローカル変数xに20を代入(function_aのxとは別の変数) |
7行目 | print("関数B内のx:", x) | function_b内のローカル変数xの値を表示 |
9行目 | function_a() | function_aを呼び出し、その中のローカル変数xが使用される |
10行目 | function_b() | function_bを呼び出し、その中のローカル変数xが使用される |
- ローカル変数:関数やブロック内で定義され、その範囲内でのみ使える変数。外からはアクセスできない
グローバルスコープ
グローバルスコープとは、プログラム全体で参照できる変数の範囲のことです。関数の外部で定義された変数は、そのプログラム内のどこからでもアクセスできます。
関数の外側で変数名 = 値
と書くことで、グローバル変数を作成できます。例えば、name = "太郎"
と書くと、すべての関数からこの変数を使えます。関数内でグローバル変数の値を読むことは自由にできますが、値を変更するときはglobal 変数名
という宣言が必要です。
グローバル変数を使うと、複数の関数でデータを共有できて便利ですが、多用するとプログラムが複雑になります。どこで値が変更されるかが分かりにくくなるため、必要最小限の使用に留めることが大切です。
# グローバル変数を定義
name = "太郎"
def show_name():
print("名前:", name)
def greet():
print(f"こんにちは、{name}さん!")
show_name()
greet()
名前: 太郎
こんにちは、太郎さん!
行数 | コード | 解説 |
---|---|---|
2行目 | name = "太郎" | 関数の外でグローバル変数nameを定義 |
4行目 | def show_name(): | 名前を表示する関数を定義 |
5行目 | print("名前:", name) | 関数内からグローバル変数nameの値を読み込んで表示 |
7行目 | def greet(): | 挨拶をする関数を定義 |
8行目 | print(f"こんにちは、{name}さん!") | 関数内からグローバル変数nameを読み込んでf文字列文字列は文字の並びを表現するデータ型で、テキストデータを扱うための基本的な構造として広く使用されています。で表示 |
10行目 | show_name() | show_name関数を呼び出し |
11行目 | greet() | greet関数を呼び出し |