SORU
13 Ocak 2012, Cuma


Python modülleri "liste=liste" etkisi nedir?

Python standart olarak aşağıdaki kod /usr/lib/python2.7/multiprocessing/dummy/__init__.py kütüphane gördüm:

list = list
dict = dict

Bu deyim ne anlama geliyor? Benim en iyi tahminim: "izin verirsen dict list varsa kontrol edin". Sadece list __builtins__ dict olmadan eski çağlardan beri eski kod mu?

Ve başka bir çılgın tahminim var:optimizasyonukapsam modülü için arama hızı global kapsam list hareketli. Bu deyim ile ilgili varsayım aklı başında mı? Ben Çoklu işlem için geçerli eğer bu varsayım yanlış.

CEVAP
13 Ocak 2012, Cuma


İhracat. Sen yap o zaman

from multiprocessing.dummy import list

... düzenli list olur.

Bu satır olmadan, paketi list multiprocessing.dummy olmazdı.

Bu mantıklı paket arasında düzgün bir API var. Tüm paketler list bir sınıf sunmak gerektiğini söylüyorlar. a özel bir uygulama sağlamak için, b ancak paket seçer paketi __builtins__ list kullanmak istiyor.

powerful/__init__.py:
from powerfulinternals import PowerfulList as list
from simple.simpleinternals import Something as whoo

simple/__init__.py:
list = list
from simpleinternals import Something as whoo

application.py:
try:
  import powerful as api
else:
  import simple as api

mylist = api.list()
woot = api.whoo()

Böyle şeyler yapmak için bir neden daha. Örneğin kullandığınız ne açık olun.

list = list

ayrıca "eğer kullanıyorum listeler türünü değiştirmek isterseniz, bunu değiştirin." bir ifadesi olarak görülebilir

Bu durumda, eski. list dict olarak gösterilir:

manager = multiprocessing.dummy.Manager()
l = manager.list()
d = manager.dict()

Ve Manager tanımı:

def Manager():
  return sys.modules[__name__]

yani Manager.list = list.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hak5

    Hak5

    7 EYLÜL 2005
  • Machinima

    Machinima

    17 Ocak 2006
  • MagicofRahat

    MagicofRahat

    13 Temmuz 2007