ローカル変数とグローバル変数

投稿者: | 2022-10-28

目次

グローバル変数

animal = 'cat' # グローバル変数 animal

def f():
    print(animal)
    
f()

# cat

グローバル変数とローカル変数

# 関数内でグローバル変数を「出力」した後、それに値を入れるとエラー
# ローカル変数のanimalを先にprintしようとしたため、とみなされる
# 最初のprintを消すと、ローカル変数のanimalが出力される(≠グローバル変数のanimal)

animal = 'cat' # グローバル変数 animal

def f():
    print(animal) 
    animal = 'dog' # ローカル変数 animal
    print('after: ', animal)
    
f()

関数内からグローバル変数を書き換える

  • global をつける
animal = 'cat'

def f():
    global animal
    animal = 'dog'
    print('local:', animal)
    
f()
print('global:', animal)

# local: dog
# global: dog

ローカル変数やグローバル変数を出力する

  • 関数内のローカル変数を出力するlocals()という関数がある
  • 実行すると関数の中で宣言された変数名をその値をセットにした辞書型を返す
def f():
    animal = 'dog'
    animal2 = 'horse'
    print('local:', locals())
    
f()

# local: {'animal': 'dog', 'animal2': 'horse'}
# 同じようにグローバル変数を出力する場合はglobals()と実行できるが
# 自分が作成した変数の他に様々な変数がはいっている(ここでは表示は割愛)

animal = 'cat'

print('global:', globals())