Python3 エンジニア認定基礎試験 練習問題 Day34:組み込み関数(globals, locals)

【本日のミッション】

Day33では「組み込み関数(repr, format)」を学びました。

今日は globals()locals() を使って、スコープ内の変数情報を確認する方法を理解しましょう。


globals の基本

x = 10
y = 20
print(globals())

出力例(抜粋)

{'__name__': '__main__', '__doc__': None, 'x': 10, 'y': 20, ...}

globals() は、グローバルスコープ(モジュール全体)に存在する変数や関数を辞書として返す関数です。

スクリプト全体の変数を動的に操作したいときに役立ちます。

つまり「プログラム全体で使える変数一覧」を取得できます。


locals の基本

def show_info():
    a = 1
    b = 2
    print(locals())

show_info()

出力結果

{'a': 1, 'b': 2}

locals() は、現在のローカルスコープ(関数やブロック内)に存在する変数の辞書を返します。

その関数の中でしか見えない「ローカル変数」を確認できます。


globals() と locals() の違い

関数名 対象スコープ 返す値
globals() モジュール全体(グローバル) すべてのグローバル変数を含む辞書
locals() 現在の関数やブロック(ローカル) 関数内のローカル変数を含む辞書

練習問題

次のコードを実行するとどうなるでしょうか?

x = 100
def test():
    y = 200
    print('globalsにxはある?', 'x' in globals())
    print('localsにyはある?', 'y' in locals())

test()

選択肢

A)

globalsにxはある? True
localsにyはある? True

B)

globalsにxはある? False
localsにyはある? True

C)

globalsにxはある? True
localsにyはある? False

D)

globalsにxはある? False
localsにyはある? False

Python3 エンジニア認定基礎試験 練習問題 Day34:組み込み関数(globals, locals)

解答

A)

globalsにxはある? True
localsにyはある? True

■■■スポンサーリンク■■■

解説

  • x = 100 はグローバルスコープの変数 → globals() に含まれる

  • y = 200 は関数 test() の中だけの変数 → locals() に含まれる

したがって両方とも True になります。


👉 正解は

A)

globalsにxはある? True
localsにyはある? True

✅ポイント

  • globals() → グローバル変数や関数を辞書で取得

  • locals() → 関数内のローカル変数を辞書で取得

  • globals() と locals() の戻り値は dict 型

豆知識:
exec() 関数などでコードを動的に実行する際、

globals()locals() を引数として指定することで、

スコープを制御することも可能です。


次回予告

Day35では 組み込み関数(vars, callable) を学びます。

オブジェクトの属性情報を取得したり、呼び出し可能かを調べる方法を整理します!


参考

Python 3 エンジニア認定基礎試験 – Odyssey CBT
Python3 エンジニア認定基礎試験 出題範囲と学習プラン
Python3 エンジニア認定基礎試験 練習問題 Day1:変数の基本
Python3 エンジニア認定基礎試験 練習問題 Day2:変数の型(int型とstr型)
Python3 エンジニア認定基礎試験 練習問題 Day3:算術演算子と代入演算子
Python3 エンジニア認定基礎試験 練習問題 Day4:文字列の操作
Python3 エンジニア認定基礎試験 練習問題 Day5:比較演算子と論理演算子
Python3 エンジニア認定基礎試験 練習問題 Day6:if文(条件分岐)
Python3 エンジニア認定基礎試験 練習問題 Day7:ループ処理(for文・while文)
Python3 エンジニア認定基礎試験 練習問題 Day8:break文とcontinue文
Python3 エンジニア認定基礎試験 練習問題 Day9:リスト(list)の基本
Python3 エンジニア認定基礎試験 練習問題 Day10:リストの操作(append,remove,len など)
Python3 エンジニア認定基礎試験 練習問題 Day11:リストのスライス(部分取り出し)
Python3 エンジニア認定基礎試験 練習問題 Day12:タプル(tuple)の基本
Python3 エンジニア認定基礎試験 練習問題 Day13:辞書(dict)の基本
Python3 エンジニア認定基礎試験 練習問題 Day14:集合(set)の基本
Python3 エンジニア認定基礎試験 練習問題 Day15:関数の定義と呼び出し
Python3 エンジニア認定基礎試験 練習問題 Day16:関数のデフォルト引数とキーワード引数
Python3 エンジニア認定基礎試験 練習問題 Day17:可変長引数(*args, **kwargs)
Python3 エンジニア認定基礎試験 練習問題 Day18:関数のスコープ(ローカル変数とグローバル変数)
Python3 エンジニア認定基礎試験 練習問題 Day19:ネスト関数(関数の中の関数)
Python3 エンジニア認定基礎試験 練習問題 Day20:ラムダ式(無名関数)
Python3 エンジニア認定基礎試験 練習問題 Day21:組み込み関数(len, type, range など)
Python3 エンジニア認定基礎試験 練習問題 Day22:組み込み関数(sum,max,min,sorted)
Python3 エンジニア認定基礎試験 練習問題 Day23:文字列と組み込み関数(len,str,int,float)
Python3 エンジニア認定基礎試験 練習問題 Day24:組み込み関数(abs, round, pow)
Python3 エンジニア認定基礎試験 練習問題 Day25:組み込み関数(sorted の応用と key 引数)
Python3 エンジニア認定基礎試験 練習問題 Day26:組み込み関数(enumerate, zip)
Python3 エンジニア認定基礎試験 練習問題 Day27:組み込み関数(map, filter, reduce)
Python3 エンジニア認定基礎試験 練習問題 Day28:組み込み関数(any, all)
Python3 エンジニア認定基礎試験 練習問題 Day29:組み込み関数(isinstance,issubclass)
Python3 エンジニア認定基礎試験 練習問題 Day30:組み込み関数(callable, eval)
Python3 エンジニア認定基礎試験 練習問題 Day31:組み込み関数(dir, help)
Python3 エンジニア認定基礎試験 練習問題 Day32:組み込み関数(id, hash)
Python3 エンジニア認定基礎試験 練習問題 Day33:組み込み関数(repr, format)
Python3 エンジニア認定基礎試験 練習問題 Day34:組み込み関数(globals, locals)
Python3 エンジニア認定基礎試験 練習問題 Day35:組み込み関数(vars, callable)
Python3 エンジニア認定基礎試験 練習問題 Day36:組み込み関数(reversed, slice)
Python3 エンジニア認定基礎試験 練習問題 Day37:組み込み関数(getattr, setattr, hasattr, delattr)
Python3 エンジニア認定基礎試験 練習問題 Day38:組み込み関数(eval, exec, compile)
Python3 エンジニア認定基礎試験 練習問題 Day39:組み込み関数(zip の応用・辞書との組み合わせ)
Python3 エンジニア認定基礎試験 練習問題 Day40:モジュールの基本(import と from の違い)
Python3 エンジニア認定基礎試験 練習問題 Day41:as(別名インポート)と import の仕組み
Python3 エンジニア認定基礎試験 練習問題 Day42:標準ライブラリ(math モジュールの基本)
Python3 エンジニア認定基礎試験 練習問題 Day43:標準ライブラリ(random モジュールの活用)
Python3 エンジニア認定基礎試験 練習問題 Day44:標準ライブラリ(datetime モジュールの使い方)
Python3 エンジニア認定基礎試験 練習問題 Day45:標準ライブラリ(os と sys)

■■■スポンサーリンク■■■