Python'daki bir modül ile kitaplık arasındaki fark nedir?


87

Java konusunda geçmişim var ve Python'da yeniyim. Devam etmeden önce Python terminolojisini doğru anladığımdan emin olmak istiyorum.

Bir modülden anladığım kadarıyla, okumayı kolaylaştırmak için birçok komut dosyası tarafından içe aktarılabilen bir komut dosyası. Tıpkı java'da olduğu gibi bir sınıfınız var ve bu sınıf diğer birçok sınıf tarafından içe aktarılabilir.

Benim bir kitaplık anlayışım şudur: Bir kitaplık , kullanımıyla ayrılmış birçok modül içerir .

Sorum şu: Bir paketinizin olduğu paketler gibi kütüphaneler mi, örneğin adı verilen food, o zaman:

  • chocolate.py
  • sweets.py
  • biscuts.py

içerdiği foodpaketin?

Veya kitaplıklar paket kullanıyor mu, yani başka bir paketimiz olsaydı drink:

  • milk.py
  • juice.py

pakette bulunur. libraryİki paket içeriyor?

Ayrıca, bir uygulama programlama arabirimi (API) genellikle bir dizi kitaplık içerir, bu hiyerarşinin en üstündedir:

  1. API
  2. Kütüphane
  3. Paket içeriği
  4. Modül
  5. Senaryo

Yani bir API 2-5'ten oluşacak mı?


3
Python "paket" terimini kullanır ve çok fazla "kitaplık" (Standart Kitaplık dışında) kullanmaz.
John Zwinck

Yanıtlar:


79

Gönderen Modülleri - Python Öğreticisi

  • Modül :

    Modül, Python tanımlarını ve ifadelerini içeren bir dosyadır. Dosya adı, son .pyek ile birlikte modül adıdır .

  • Paket :

    Paketler, Python'un modül ad alanını “noktalı modül adları” kullanarak yapılandırmanın bir yoludur.

İfadenin belgelerini okursanız importdaha fazla ayrıntı verir, örneğin:

Python'da yalnızca bir tür modül nesnesi vardır ve modülün Python, C veya başka bir şeyde uygulanıp uygulanmadığına bakılmaksızın tüm modüller bu türdendir. Modülleri düzenlemeye ve bir adlandırma hiyerarşisi sağlamaya yardımcı olmak için Python'un bir paket kavramı vardır.

Paketleri bir dosya sistemindeki dizinler olarak ve modülleri dizinlerdeki dosyalar olarak düşünebilirsiniz, ancak bu benzetmeyi tam anlamıyla almayın çünkü paketler ve modüller dosya sisteminden gelmek zorunda değildir. Bu dokümantasyonun amaçları için, bu uygun dizin ve dosya benzetimini kullanacağız. Dosya sistemi dizinleri gibi, paketler de hiyerarşik olarak düzenlenir ve paketlerin kendileri alt paketlerin yanı sıra normal modüller içerebilir.

Tüm paketlerin modül olduğunu, ancak tüm modüllerin paket olmadığını unutmamak önemlidir . Veya başka bir deyişle, paketler sadece özel bir modül türüdür. Özellikle, bir __path__öznitelik içeren herhangi bir modül paket olarak kabul edilir.

Dolayısıyla terim module, belirli bir varlığı ifade eder: Örnekleri modulepython programlarında kullandığınız nesneler olan bir sınıftır . Benzer şekilde, bu örneklerin "oluşturulduğu" dosya sistemindeki dosyaya atıfta bulunmak için de kullanılır.

Komut dosyası terimi , amacı yürütülecek olan bir modülü ifade etmek için kullanılır. "Program" veya "uygulama" ile aynı anlama sahiptir, ancak genellikle basit ve küçük programları (yani en fazla birkaç yüz satır içeren tek bir dosya) tanımlamak için kullanılır. Bir senaryo yazmak dakikalar veya birkaç saat sürer.

Terimi kütüphane basitçe birçok uygulama tarafından kullanılabilir olma hedefiyle tasarlanan kod bir demet için genel bir terimdir. Belirli uygulamalar tarafından kullanılabilen bazı genel işlevler sağlar.

Bir modül / paket / başka bir şey "yayınlandığında" insanlar onu genellikle bir kitaplık olarak adlandırır. Genellikle kitaplıklar bir paket veya birden fazla ilgili paket içerir, ancak tek bir modül bile olabilir.

Kitaplıklar genellikle herhangi bir özel işlev sağlamaz, yani "kitaplık çalıştıramazsınız".

API, bağlama bağlı olarak farklı anlamlara sahip olabilir. Örneğin:

  • DB API veya tampon protokolü gibi bir protokolü tanımlayabilir .
  • bir uygulama ile nasıl etkileşim kurulacağını tanımlayabilir (örneğin Python/C API)
  • bir kitaplık / paketle ilişkili olduğunda, bu kitaplık tarafından işlevselliği için sağlanan arabirimdir (işlevler / sınıflar / sabitler vb.)

Her durumda, bir API python kodu değildir . Az ya da çok resmi olabilecek bir tanım.


40

Yalnızca paket ve modülün Python'a özgü iyi tanımlanmış bir anlamı vardır.

  1. Bir API , kendi başına bir kod koleksiyonu değildir - daha çok çeşitli parçaların (genellikle kitaplıklar) birbirleriyle nasıl iletişim kurduğu bir "protokol" spesifikasyonu gibidir. Python'da birkaç dikkate değer "standart" API vardır. Ör. DB API

  2. Bana göre, kütüphane uygulama olmayan herhangi bir şeydir - python'da, kütüphane, genellikle alt modülleri olan bir modüldür . Bir kitaplığın kapsamı oldukça değişkendir - örneğin, python standart kitaplığı çok geniştir (epeyce alt modüle sahiptir) ve PyPi'de çok sayıda tek amaçlı kitaplık vardır, örneğin py <2.7 için bir arka portcollections.OrderedDict

  3. Bir paket bir ortak ad altında piton modülleri topluluğudur. Pratikte, özel bir __init__.pymodül (dosya) içeren bir dizine birden fazla python modülü yerleştirilerek oluşturulur .

  4. Bir modül , içe aktarılması amaçlanan tek bir python kodu dosyasıdır . Bu biraz basitleştirmedir, çünkü pratikte pek çok modül komut dosyası olarak çalıştırıldıklarını algılar ve bu durumda özel bir şey yapar.

  5. Bir komut dosyası çıkartılacaktır piton tek bir kod dosyası infaz 'Ana' programı gibi.

  6. Birden çok dosyaya yayılan bir kod kümeniz varsa, muhtemelen komut dosyası yerine bir uygulamanız vardır .


1

Kitaplık: Modüller topluluğudur.

(Kitaplık ya yerleşik modüller (C ile yazılmış) + python ile yazılmış modüller içerir).

Modül: Daha karmaşık bir yapı oluşturmak için kullanılabilen bir dizi standartlaştırılmış parça veya bağımsız birimden her biri.

Gayri dilinde konuşan bir modül önlemek KURU için, belirli bir amaç için kullanılır ve bunun gibi diğer programlarda kullanılabilecek satır kod ayarlanır ( D on't R EPEAT Y bir ekip ve odaklanarak olarak kendimizi) ana gereksinim. kaynak

API , diğer uygulamaların doğrudan erişime sahip olmadan kitaplığınızla etkileşim kurması için bir arabirimdir.

Paket temelde dosyalar içeren bir dizindir.

Komut dosyası , tek bir dosya içindeki bir dizi komut anlamına gelir.


0

Bunu, en erken başlayanların kullanacağı terimleri kullanmadan yanıtlamaya çalışacağım ve terimlerin en "resmi" ve / veya en çok anlaşılan veya tek tip kullanımıyla birlikte neden veya nasıl farklı kullandıklarını açıklamaya çalışacağım.

Kafa karıştırıcı olabilir ve kendimi çok düşünerek karıştırdım, bu yüzden bunun hakkında fazla düşünmeyin. Her neyse, bağlam çok önemlidir.

Kitaplık - Çoğunlukla genel kitaplığa veya benzer bir biçim ve kullanımla oluşturulmuş başka bir koleksiyona atıfta bulunulur. Genel Kütüphane 'standart', popüler ve yaygın olarak kullanılan Modüllerin toplamıdır, cadı şimdilik tek dosyalı araçlar olarak düşünülebilir veya işleri mümkün veya daha hızlı hale getiren kısa yollar olarak düşünülebilir. Genel kütüphane, çoğu kişinin Python'u kurarken etkinleştirdiği bir seçenektir. Bu adı "Python Genel Kütüphanesi" olduğu için benzer yapı ve fikirlerle sıklıkla kullanılır. Witch, basitçe bir grup Modüle, hatta genellikle bir listede gruplanmış paketlere sahip olmaktır. Liste genellikle onları indirmektir. Genellikle, benzer ilgi alanlarına sahip sadece ilgili dosyalardır. Bunu tanımlamanın en kolay yolu budur.

Modül - Bir Modül , bir dosyayı ifade eder. Dosyanın 'içinde' komut dosyası vardır ve dosyanın adı modülün adıdır, Python dosyaları .py ile biter. Tüm dosya, birlikte çalıştırılan koddur, işlevler, dizeler vb. Kullanarak bir şeyler yapar. Muhtemelen en sık gördüğünüz ana modüller, diğer dosyalardan / modüllerden bilgi alabilen özel modüller oldukları için popülerdir. Bu kafa karıştırıcı çünkü dosya ve modülün adı aynı ve sadece .py. Gerçekten, bir şeyi daha kolay veya mümkün kılmak için birisi tarafından yazılmış bir kısayol olarak kullanabileceğiniz koddur.

Paket - Bağlam bir fark yaratsa da, bu genellikle bazen kullanılan bir terimdir. Deneyimlerime göre en yaygın kullanım, bir arada gruplandırılmış birden çok modül (veya dosya). Neden birlikte gruplandırıldıkları birkaç nedenden dolayı olabilir, yani bağlam önemli olduğunda. Bunlar, paket (ler) terimini fark ettiğim yollarKullanılmış. İndirilen, oluşturulan ve / veya saklanan modüllerden oluşan bir gruptur. Hepsi doğru veya yalnızca 1 olabilir, ancak gerçekte yalnızca diğer dosyalara başvuran, doğru yapı veya formatta olması gereken bir dosyadır ve bu toplamın tamamı paketin kendisidir, yüklenmiş veya pakete dahil edilmiş olabilir. python genel kütüphanesi. Bir paket modüller (.py dosyaları) içerebilir çünkü bunlar birbirine bağlıdır ve bazen düzgün çalışmayabilir veya hiç çalışmayabilir. Bir paketin her parçasının (modül / dosya) her zaman ortak bir amacı vardır ve tüm parçaların toplamı paketin kendisidir.

Python Paketlerinde çoğunlukla Modüller vardır, çünkü paket adı tüm parçaları birbirine bağlamak için kullanılan modülün adıdır. Böylece, bir modül olduğu için bir paket girebilirsiniz, ayrıca paket olmayan diğer modülleri çağırmasına da izin verir, çünkü bunlar yalnızca belirli bir işlevi yerine getirir veya görev diğer dosyaları içermez. Paketlerin bir amacı vardır ve her modül bu nihai hedefe ulaşmak için birlikte çalışır.

Çoğu kafa karışıklığı, basit bir dosya adı veya bir dosyanın önekinden gelir, modül adı ve ardından yine paket adı olarak kullanılır.

Unutmayın Modüller ve Paketler kurulabilir. Kitaplık genellikle bir modül ve paket grubunu listelemek veya biçimlendirmek için kullanılan genel bir terimdir. Pythons genel kütüphanesi gibi. Bir hiyerarşi işe yaramaz, API'ler gerçekten ait değildir ve eğer yaparsanız herhangi bir yerde olabilirler ve Komut Dosyası, Modül ve Paketleri içeren her yazılım, dünya kitaplığı çok genel bir sözcüktür, birçok şeye kolayca uygulanır ve API'yi de mümkün kılar bunun üstüne veya altına oturmak için. Bazı Modüller diğer kodlara dayandırılabilir ve bu, saf bir Python ile ilgili tartışmayla ilgili olduğunu düşündüğüm tek zamandı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.