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

  • Helder Barreto

    Helder Barre

    22 Mayıs 2006
  • Jucyber Tutoriais

    Jucyber Tuto

    8 EYLÜL 2009
  • Palmundo Ec

    Palmundo Ec

    11 HAZİRAN 2009