自動化厨のプログラミングメモブログ│CODE-LIFE

Python/ExcelVBA/JavaScript/Raspberry Piなどで色んなことを自動化

Pythonのスコープ(変数の参照・代入可能範囲?)でつまづいた。グローバル変数を関数内で変更するには

今日Flask-ngrokというライブラリを使っていてつまづいたので戒めメモ。

Pythonのグローバル変数は関数内で代入できない

num = 0

def num_func ():
    num = 1
    print("num " + x)

このように実行したときにてっきりnum 1と表示されると思っていましたが、表示されたのはnum 0でした。

実はPythonのグローバル変数は関数内で参照はできるが、変更はできないらしいです。

困った・・・。と調べていたらありました。

【Python】ローカル変数とグローバル変数 | アルゴリズム雑記

関数内でglobal宣言すれば代入可能

num = 0

def num_func ():
    global num 
    num = 1
    print("num " + x)

関数内で代入したい変数名の前にglobalと付けて宣言したあとなら関数内で代入可能らしい!

やっぱりこういう基礎的なところすっ飛ばして動くもの作ろうとするとちょいちょいつまづきますね笑

でも真面目に基礎やるのが嫌いなので走りながら勉強します。