2016-12-06 4 views
5

私は、関数やクラスの中から複数のグローバル変数を簡単に定義する方法を模索しようとしています。Python - 複数のグローバル変数を定義するもっとも簡単な方法

明白なオプションは、次の操作を実行することです:

global a,b,c,d,e,f,g...... 
a=1 
b=2 
c=3 
d=4 
..... 

これは簡単な例ですが、基本的に、私は特定の関数の入力に基づいて、グローバル変数の数十を定義する必要があります。理想的には、値を更新してグローバル名を個別に定義することなく、グローバル名と値を定義して世話をしたいと思います。

さらに明確にする。

私はこれのPythonの同等(ジャバスクリプト)を探しています:

var a = 1 
    , b = 2 
    , c = 3 
    , d = 4 
    , e = 5; 
+2

いいえ、そうする必要はありません。これは、ほとんど何もするための全く間違った方法です。リスト、辞書、関数、戻り値を確認する必要があります。 – TigerhawkT3

+0

確かに、グローバル化せずにコードを書く方法は__very__です。 –

+1

@ TigerhawkT3私は完全に同意します。ここで問題となっているのは、非常に書かれていないプロジェクトの編集です。それを書き直すには多大な努力が必要なので、私はロックとハードな場所の間にこだわっており、本質的には自分の制約を受けて解決策を思いついています。関数内のグローバル変数の値を定義します。 –

答えて

2

さてさて、私は自分自身新たなんだ、これは同様に私にとって大きな課題となっていると私はそれが(質問の言い回しに関係していると思うことをやるべきではありません私はグーグルと同じように言い、私がやろうとしていたことに関連する答えを見つけることができませんでした。私がこれをしてはならない理由がある場合は、誰かが私を修正してください...

グローバル変数のリストを設定する最良の方法は、そのモジュールでそれらのクラスを設定することです。

class globalBS(): 
    bsA = "F" 
    bsB = "U" 

今、あなたはそのように参照することにより、他の関数になど、それらを変更、それらを呼び出すことができます。

print(globalBS.bsA) 

は、そのモジュール上の任意の関数に「F」を印刷します。その理由は、Pythonはクラスをモジュールとして扱うからです。これは、グローバル変数のリストを設定する際にうまくいきます。例えば、私が現在やっているような複数のオプションを持つインターフェースをコピーして貼り付けずにすべての機能にグローバルな巨大なリスト。私はクラス名を可能な限り短くしておきます。単語全体ではなく、1つまたは2つの文字かもしれません。

希望に役立ちます!

-1

彼らは概念的に関連している場合は1つのオプション辞書にそれらを持っていることです。

global global_dictionary 
global_dictionary = {'a': 1, 'b': 2, 'c': 3} 

しかし、それがあったとして、あなたの質問にコメントした、これはこの質問を生成した問題を処理するための最良のアプローチではありません。

+0

です。まず、グローバルは間違った方法です。第二に、辞書は変更可能であり、辞書を再割り当てせずに突然変異させることができる。 – TigerhawkT3

+0

@Martinbaste、私はこの方法を考えましたが、すでにグローバル変数を呼び出すコードをすべて編集する必要があります。 –

-1

globals()組み込み関数は、現在のモジュールのグローバル変数を参照します。

globals()['myvariable'] = 5 
print(myvariable) # returns 5 

すべての変数に対してこれを繰り返します。

しかし、あなたが最も確かに

+0

'globals()'は恐らく 'global'を使うよりも悪い考えです。 – TigerhawkT3

+0

実行時に 'global'を使って、未知の名前とユーザ入力からの値を持つ変数を定義するにはどうすればいいですか? –

関連する問題