Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【python3】global(グローバル)変数を関数の中から変更する

関数の外で定義した変数を、関数の中でいじったら関数外の変数の値も変わると思ってたがそうではないらしい・・・・

 

関数の外で定義した変数はグローバル変数と呼ばれる
それを関数内で呼び出すときは、
global hoge
みたいな感じで頭にglobalをつければOK

 

関数の内外で値を共有する方法として一番簡単な方法は、
def func(hoge):
 # なんかする
 return hoge
で返り値にしてしまう方法

 

今回はこれではちょっと都合が悪かったのでglobalを使った

--------------

 

mainのコードとmodule内で共通の変数を使いたい、かつ関数の引数として渡さない方法もあるっぽい

■ 参考 : Pythonで全モジュール共通のグローバル変数を扱う方法

モジュール内で空のmoduleを読み込む
mainのコード内でも同じ空のmoduleを読み込む
モジュールの関数内で、空moduleの変数として定義すればmain関数でもそれを使えるようになる

 

他にも
■ 参考 : Global変数をmodule間やmainとmoduleの間で共有する方法

というのがあるっぽい