SORU
16 Aralık 2008, Salı


Kapsam hata Python değişken

Yıllardır programlama yaptım, ve son zamanlarda Python öğrenmeye başladım. Aşağıdaki kodu python 2.5 ve 3.0 beklenen gibi konularda ise X işletim sistemi üzerinde çalışıyor:

a, b, c = (1, 2, 3)

print(a, b, c)

def test():
    print(a)
    print(b)
    print(c)    # (A)
    #c =1       # (B)
test()

Ben satır satır ancak(B)Alırım ., ^em>UnboundLocalError: 'c' atanmış değilçizgisinde(A). Değerleribirvebdoğru. yazdırılır Bu beni tamamen şaşkın iki nedeni vardır:

  1. Neden bir çalışma zamanı hatası satır atılır(A)çünkü bu hat üzerinde daha sonra bir açıklama(B)?

  2. Neden değişkenlerdirbirvebbeklendiği gibi, süre basılıcyükseltir bir hata mı?

Aklıma gelen tek Açıklama Buyereldeğişkencatama "ile" değişken . genel göre önceliği alır c =1, oluşturulur ^em>cdaha önce yerel bir değişken oluşturulur. Tabii ki, bir değişken "var önce." kapsam çalmak için mantıklı değil

Birisi bu davranışı açıklayabilir misiniz?

CEVAP
16 Aralık 2008, Salı


Python fonksiyonları farklı işlevi içinde onlara değer atadıktan bağlı olarak ya da değil, değişken davranır. Eğer bir değişken herhangi bir değer atarsanız, yerel bir değişken olarak varsayılan olarak kabul edilir. Satır satır, bu nedenle, herhangi bir değer atanmış önce yerel bir değişken referans için çalışıyorsunuz.

Değişken c genel c koyun bakın isterseniz

global c

işlevi ilk satırı.

3, python gibi

nonlocal c

en yakın kapsayan (değil) genel kapsam başvurmak için kullanabilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Learn word 2013 tutorials

    Learn word 2

    5 AĞUSTOS 2014
  • ThePhestor

    ThePhestor

    22 Mart 2011
  • whatever

    whatever

    30 EYLÜL 2005