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

  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • foreignimage

    foreignimage

    13 HAZİRAN 2006
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009