SORU
13 Temmuz 2009, PAZARTESİ


Hangi python daha iyi, del veya delattr?

Bu çok saçma gelebilir ama bunun çok dırdırcı bir süre beynimin geri.

Python bize iki yerleşik nesne öznitelikleri silmek için yollar sunardelword komutu vedelattryerleşik işlev. Tercih ederimdelattrben biraz daha açık onun: çünkü sanırım

del foo.bar
delattr(foo, "bar")

Ama eğer-the-başlık altında aralarındaki farklılıkları olabilir varsa merak ediyorum.

CEVAP
13 Temmuz 2009, PAZARTESİ


İkincisi daha etkilidir. del foo.bar iki bayt kodu talimat derler:

  2           0 LOAD_FAST                0 (foo)
              3 DELETE_ATTR              0 (bar)

delattr(foo, "bar") oysa alır beş:

  2           0 LOAD_GLOBAL              0 (delattr)
              3 LOAD_FAST                0 (foo)
              6 LOAD_CONST               1 ('bar')
              9 CALL_FUNCTION            2
             12 POP_TOP

Bu ilk çalışan haline çevirirbirazdaha hızlı (ama çok büyük bir fark değil – .15 açıklamalardan benim makinede).

Diğerleri de söylediğim gibi, gerçekten sadece siliyorsunuz özniteliği dinamik olarak belirlenir ikinci form kullanılmalıdır.

[Derleyici LOAD_FAST LOAD_GLOBAL kullanabilecekleri bayt talimatları bir işlev içinde oluşturulan göstermek için düzenlenmiş]

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Benjamin Heckendorn

    Benjamin Hec

    4 Mayıs 2008
  • booba1234

    booba1234

    22 Temmuz 2006
  • Ludique

    Ludique

    21 NİSAN 2009