SORU
24 EYLÜL 2008, ÇARŞAMBA


Python import deyimleri her zaman bir modülün en üstünde olmalıdır?

PEP 08 devletler:

İthalat her zaman modülü bütünsel ve sabitler önce sadece modül açıklamaları ve docstrings sonra herhangi bir dosyanın üstüne, at ve koyun.

Ancak eğer ithal ediyorum sınıf/yöntem/işlevi yalnızca nadir durumlarda kullanılır, kesinlikle daha verimli gerektiğinde ithalatını yapmak değil mi?

Bu değil:

class SomeClass(object):

    def not_often_called(self)
        from datetime import datetime
        self.datetime = datetime.now()

bu daha verimli?

from datetime import datetime

class SomeClass(object):

    def not_often_called(self)
        self.datetime = datetime.now()

CEVAP
24 EYLÜL 2008, ÇARŞAMBA


Alma modülü oldukça hızlı, ama anlık değildir. Bunun anlamı şudur:

  • Modülün üstündeki ithalat koyarak sadece bir kez ödenen bu önemsiz bir maliyet çünkü, gayet iyi.
  • Bir işlev içinde ithalat koyarak bu işlev çağrıları daha uzun sürmesine sebep olacaktır.

Eğer verimliliği önem veriyorsanız, üst ithalatı koydu. Eğer profil oluşturma yardımcı olacağını gösteriyorsa bir fonksiyon içine taşıyın (sen . sadece ^strong>yaptıperformansını görmek için, profil, değil mi??)

< / ^ hr .

En tembel ithalatı gerçekleştirmek için görmedim nedenleri vardır:

  • İsteğe bağlı kütüphane desteği. Eğer kodunuzu farklı kütüphaneleri kullanan birden fazla yolu varsa, isteğe bağlı bir kütüphane yüklü değilse kırma.
  • İthal ama aslında değil kullanılabilecek bir eklenti, __init__.py. Örnekler bzrlib'nın tembel yükleme çerçevesi. kullanan Çarşı eklentileri,

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Anthony Le

    Anthony Le

    10 EKİM 2006
  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • Tek Syndicate

    Tek Syndicat

    23 Temmuz 2008