2016-12-06 31 views
5

Bir fonksiyonun içinden veya sınıftan çoklu global değişkenleri tanımlamanın kolay bir yolunu aramaya çalışıyorum.Python - Birden çok global değişken tanımlamanın en kolay yolu

bariz seçenek aşağıdaki yapmaktır:

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

Bu basitleştirilmiş bir örnektir ama aslında ben belirli bir fonksiyonun girişine dayalı küresel değişkenler onlarca tanımlamanız gerekir. İdeal olarak, hem değeri güncellemek hem de global adı bağımsız olarak tanımlamak zorunda kalmadan global isim ve değeri tanımlamakla ilgilenmek isterim.

Daha fazla netlik eklemek için.

Bu (javascript) ait piton eşdeğeri için arıyorum:

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

Hayır, bunu yapmanıza gerek yok. Bu neredeyse her şeyi yapmak için tamamen yanlış bir yoldur. Listeleri, sözlükleri, işlevleri ve dönüş değerlerini incelemeniz gerekir. – TigerhawkT3

+0

Kesinlikle tek bir global olmadan kodunuzu yazmanın bir yolu __very__. –

+1

@ TigerhawkT3 Tamamen katılıyorum, sorun çok kötü yazılmış bir projeyi düzenliyor.Tekrar yazmak için çok fazla çaba harcanırdı, bu yüzden bir kaya ile sert bir yer arasında sıkışıp kaldım ve temelde kısıtlarımın verildiği çözüm olmak için uğraşmaya çalışıyorum. Küresel değişkenler için değerleri bir işlev içinde tanımlayan hangileridir. –

cevap

2

Tamam, kendimi yeniyim bunu yapmamalı ve bu benim için de büyük bir sorun olmuştur ve ben (söz lafzı ile ilgisi var düşünüyorum Ben googling aynı şekilde phrased ve ne yapmaya çalıştığım ile ilgili bir cevap oldukça bulamadı). Bunu yapmamam için bir sebep varsa lütfen beni düzeltin, ama ...

Global değişkenlerin listesini oluşturmanın en iyi yolu, bu modülde kendileri için bir sınıf oluşturmaktır.

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

şimdi bunları özel olarak başvurarak başka fonksiyonlarında vb onları değiştirmek, onları çağırabilir:

print(globalBS.bsA) 

o modül üzerinde herhangi işlevinde "F" basacaktır. Bunun nedeni, python'un sınıfları modüller olarak ele almasıdır, bu yüzden bu, şu anda yaptığım gibi, kopyalama ve yapıştırma olmadan birden fazla seçeneğe sahip bir arayüz oluşturmaya çalışırken olduğu gibi, global değişkenlerin bir listesini oluşturmak için çok iyi sonuç verir. Her fonksiyonda büyük bir glob listesi. Sınıf ismini olabildiğince kısa tutmalıydım - belki bir kelimenin tamamı yerine bir veya iki karakter.

Bu yardımcı olur umarım!

-1

onlar kavramsal bir seçenek ilişkilidir Bir sözlükte onlara sahip olmaktır:

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

Ama eskisi gibi Sorunuzda yorumlanmış, bu soruyu oluşturan sorunu ele almak için en iyi yaklaşım değildir.

+0

İlk olarak, globals gitmek için yanlış yoldur. İkinci olarak, sözlükler değiştirilebilir ve yeniden atanmadan dönüştürülebilir. – TigerhawkT3

+0

@Martinbaste, Ben bu yöntemi düşündüm, ama daha sonra bu küresel değişkenleri çağırır tüm kod düzenleme gerektirir .... –

-1

globals() yerleşik işlev, geçerli modüldeki genel değişkenleri ifade eder. Aynı normal sözlükte de kullanabilirsiniz.

Ancak, kesinlikle

+0

'globals()' muhtemelen 'global' kullanmaktan daha da kötü bir fikir. – TigerhawkT3

+0

Çalışma zamanı sırasında 'global', kullanıcı isminden gelen bilinmeyen isimleri ve değerleri olan değişkenleri tanımlamak için nasıl kullanabilir? –

İlgili konular