Ne yapar . Python bir ithalat ifadesinde ne demek?


141

Ben Python multiprocessingmodülü için kod üzerinde bakıyorum ve bu satırı içerir:

from ._multiprocessing import win32, Connection, PipeConnection

onun yerine

from _multiprocessing import win32, Connection, PipeConnection

ince fark önceki dönemdir _multiprocessing. Bu ne anlama geliyor? Neden dönem?


3
Buna göreli içe aktarma adı verilir: docs.python.org/tutorial/modules.html
Aillyn

Olmadan .bir dosyayı olsaydı, _multiprocessing.pybir sonraki ana senaryoya bazı çözülemez nedenle multiprocessingkırardı. İle .kendi modülünü almasını sağlar.
Chris Morgan

A ., eş modüllere atıfta bulunuyorsa, neden .bu çok işlemcili modülün düzenli sys.path kitaplıklarının bir parçası olması gerektiğinde , belgeler neden bir kullanıldığını söylüyor ? Soru ve Chris'in açıklaması onları karıştırıyor mu yoksa anlamıyor muyum? Yardımı takdir et.
rfii

Yanıtlar:


120

Bu, açık göreli içe aktarmaların yeni sözdizimidir . Geçerli paketten içe aktarma anlamına gelir.


26
"Mevcut paket" in ne olduğunu tanımlar?
fraxture

7
İçe aktarılan paketin nereden geldiğini söylemelidir . Temel olarak geçerli ad alanı veya paket dizini anlamına gelir.
Keith

2
Teşekkürler, ne demek istediğini biliyorum. Açık olmak gerekirse, bir örnek vermeyi düşünür müsünüz?
fraxture

11
Şunu yapabilirsiniz:from . import peermodule from .. import parentpackagemodule
Keith

2
@bmc Öğrenmenin iyi bir yolu küçük bir deneme yapmak ve bunu kendiniz denemektir. ;-)
Keith

22

Modül adındaki nokta, göreli modül alımı için kullanılır (bkz. Burada ve burada , bölüm 6.4.2).

Geçerli pakete değil üst öğelerine bakarak birden fazla nokta kullanabilirsiniz. Bu sadece paketler içinde kullanılmalıdır, ana modülde mutlaka mutlak modül adları kullanılmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.