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

  • Huot Media

    Huot Media

    7 Mayıs 2010
  • super1988guy

    super1988guy

    9 Aralık 2007
  • WhtButterflyLiz

    WhtButterfly

    14 NİSAN 2008