Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。
Q&A
解決済
4回答
913閲覧
総合スコア88
0グッド
0クリップ
投稿2018/08/21 09:50
0
python 初心者です。
a = 0 と定義して あとから def でa = 1と変えたいのですがこのコードだと a = 0 と表示されてしまます。
数時間調べたりしましたが解決しません。 宜しくお願い致します。
python1a = 0 2 3def b(): 4 a = 1 5 6b() 7 8 9print(a)
python
1a = 0 2 3def b(): 4 a = 1 5 6b() 7 8 9print(a)
結果
python10
10
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答4件
ベストアンサー
基本的には、関数内から関数外の変数の値を変えることはできません。 どうしても操作したい場合は、global宣言します。
Python1a = 0 2 3def b(): 4 global a 5 a = 1 6 7b() 8 9print(a) # 1
Python
1a = 0 2 3def b(): 4 global a 5 a = 1 6 7b() 8 9print(a) # 1
しかし、グローバル変数の多用はコードの秩序を崩壊させます。 調べてもなかなか出てこないのは、これは初心者が使うべきでない機能だからです。
コード全体の設計を見直し、別の方法を選択するようにしてください。 例えばこのように書くのはダメなんでしょうか。
Python1a = 0 2 3def b(): 4 return 1 5 6a = b() 7 8print(a) # 1
1a = 0 2 3def b(): 4 return 1 5 6a = b() 7 8print(a) # 1
投稿2018/08/21 09:55
総合スコア35678
Python 変数 スコープ、で調べてみるといいかもしれませんね。
ただでさえPythonは変数のスコープがルーズなので、関数の中でグローバル変数を書き換えるのは出来る限り避けた方がいいですよ。
投稿2018/08/21 10:03
総合スコア3601
変更させたい変数・値を list で管理してはどうでしょう?
aaa.py
python1def update_vers(vers): 2 vers["a"] = 1 3 4vers = {"a": 0} 5print(vers["a"]) 6update_vers(vers) 7print(vers["a"])
1def update_vers(vers): 2 vers["a"] = 1 3 4vers = {"a": 0} 5print(vers["a"]) 6update_vers(vers) 7print(vers["a"])
実行例
投稿2018/08/23 15:26
総合スコア22328
回答へのコメント
2018/08/23 22:28
やり方はいろいろありますが、他にスマートなやり方があるはずです。
python1class Global: 2 a = 0 3 4print(Global.a) 5 6def b(): 7 Global.a = 1 8 9b() 10 11print(Global.a)
1class Global: 2 a = 0 3 4print(Global.a) 5 6def b(): 7 Global.a = 1 8 9b() 10 11print(Global.a)
投稿2018/08/21 13:54
総合スコア8562
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
python 関数について
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。