SORU
14 Ocak 2011, Cuma


Kullanımı "genel" Python anahtar kelime

Belgeleri okuma python fonksiyonları için ayrı bir ad alanı vardır, ve eğer o fonksiyon içinde global bir değişken kullanmak istiyorsanız kullanmam gerekiyor bunun için ne anlıyorum"". küresel

Python 2.7 kullanıyorum ve bu küçük testi denedim

>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
...     return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'

Genel şeyler olmadan bile gayet iyi çalışıyor gibi görünüyor. Herhangi bir sorun olmadan global değişken girmeyi başardım.

Bir şey mi kaçırdım? Aşağıdaki python belgelerine de:

İsim küresel bir açıklamada listelenen resmi olarak tanımlanmış olmalıdır değil parametreleri veya döngü denetimi için bir yer hedef, sınıf tanımı, işlevi tanım veya ithal deyim.

Resmi parametreleri ve sınıf tanımı bana çay yapar iken, kısıtlama döngü kontrol hedef ve işlev tanımı için anlamak için güçlü değilim.

CEVAP
14 Ocak 2011, Cuma


Anahtar global genel değişkenler oluşturma nadiren iyi bir çözüm olarak görülse de ya da yerel bir bağlamda global değişkenler değişim yaratmak için sadece yararlıdır.

def bob():
    me = "locally defined"    # Defined only in local context
    print me

bob()
print me     # Asking for a global variable

Yukarıdaki verecektir:

locally defined
Traceback (most recent call last):
  File "file.py", line 9, in <module>
    print me
NameError: name 'me' is not defined

Eğer global ifade kullanırsanız, değişken fonksiyon "kapsamında, etkili bir genel değişken. olma dışında mevcut olacak iken

def bob():
    global me
    me = "locally defined"   # Defined locally but declared as global
    print me

bob()
print me     # Asking for a global variable

Yukarıdaki kod verecektir:

locally defined
locally defined

Python doğası gereği buna ek olarak, aynı zamanda global yerel bir bağlamda fonksiyonlar, sınıflar veya diğer nesneleri bildirmek için kullanabilirsiniz. Eğer bir şey yanlış giderse, kabuslar sebep olduğu için bunu tavsiye etmem ya da hata ayıklama ihtiyacı olsa da.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • CMTelly

    CMTelly

    2 Mayıs 2007
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009