global val1 def func1(): global val1 val1 = 100 def main(): global val1 func1() print(val1) 扱う変数の量が増えると、行頭のglobal宣言だけで数行埋まってしまいます。 プログラムをクラス化すれば良いのですが、Pythonではクラス変数の前にself.をつけなければいけないという制約があるため、コードが冗長になってしまいます。 また、モジュール外から他のモジュールのグローバル変数にアクセスしようとしても、思うようにいきません。
![Pythonで全モジュール共通のグローバル変数を扱う方法 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/2d4f1ebf9be87e3eb549cf8fd4fef5155761f55f/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UHl0aG9uJUUzJTgxJUE3JUU1JTg1JUE4JUUzJTgzJUEyJUUzJTgyJUI4JUUzJTgzJUE1JUUzJTgzJUJDJUUzJTgzJUFCJUU1JTg1JUIxJUU5JTgwJTlBJUUzJTgxJUFFJUUzJTgyJUIwJUUzJTgzJUFEJUUzJTgzJUJDJUUzJTgzJTkwJUUzJTgzJUFCJUU1JUE0JTg5JUU2JTk1JUIwJUUzJTgyJTkyJUU2JTg5JUIxJUUzJTgxJTg2JUU2JTk2JUI5JUU2JUIzJTk1JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz00OWE0YTYzZTQ1YThjYWM0NDhjZjc4ZTljMGJlMmM4Nw%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBtaW5pZGFydW1hJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz00MGYyYjMxYjUwNjY0NTU2N2MxYTcxZjRhZDI0YjlmMg%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Db3f91e3c11631e778de9f1ee5e719f77)