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

  • Dopelives

    Dopelives

    30 Temmuz 2009
  • MrSuicideSheep

    MrSuicideShe

    9 NİSAN 2010
  • TechShowsYou

    TechShowsYou

    3 Mart 2011