Mam doświadczenie w Javie i jestem nowy w Pythonie. Chcę się upewnić, że dobrze rozumiem terminologię Pythona, zanim przejdę dalej.
Rozumiem moduł : skrypt, który można importować za pomocą wielu skryptów, aby ułatwić czytanie. Podobnie jak w javie, masz klasę, która może być importowana przez wiele innych klas.
Moje rozumienie biblioteki jest następujące: Biblioteka zawiera wiele modułów, które są oddzielone przez jej użycie.
Moje pytanie brzmi: czy biblioteki są jak pakiety, w których masz pakiet np. food
Wywołany:
- chocolate.py
- sweets.py
- biscuts.py
są zawarte w food
pakiecie?
Czy biblioteki używają pakietów, więc gdybyśmy mieli inny pakiet drink
:
- milk.py
- juice.py
zawarte w opakowaniu. library
Zawiera dwa pakiety?
Ponadto interfejs programowania aplikacji (API) zwykle zawiera zestaw bibliotek, który znajduje się na szczycie hierarchii:
- API
- Biblioteka
- Pakiet
- Moduł
- Scenariusz
Więc API będzie składać się z wszystkich od 2 do 5?
Odpowiedzi:
Z samouczka Pythona - moduły
Moduł :
Pakiet :
Jeśli czytasz dokumentację do
import
wyciągu podaje więcej szczegółów, na przykład:Stąd termin
module
odnosi się do konkretnej jednostki: jest to klasa, której instancjami sąmodule
obiekty używane w programach Pythona. Jest on również używany przez analogię w odniesieniu do pliku w systemie plików, z którego te instancje „są tworzone”.Termin skrypt jest używany w odniesieniu do modułu, którego celem jest wykonanie. Ma to samo znaczenie co „program” lub „aplikacja”, ale zwykle jest używane do opisania prostych i małych programów (tj. Pojedynczego pliku zawierającego co najwyżej kilkaset wierszy). Napisanie scenariusza zajmuje kilka minut lub kilku godzin.
Termin biblioteka jest po prostu ogólnym terminem oznaczającym zbiór kodu, który został zaprojektowany w celu wykorzystania w wielu aplikacjach. Zapewnia pewne ogólne funkcje, z których mogą korzystać określone aplikacje.
Kiedy moduł / pakiet / coś innego jest „publikowane”, ludzie często nazywają go biblioteką. Często biblioteki zawierają pakiet lub wiele powiązanych pakietów, ale może to być nawet pojedynczy moduł.
Biblioteki zazwyczaj nie zapewniają żadnej określonej funkcjonalności, tj. Nie można „uruchomić biblioteki”.
API może mieć różne znaczenia w zależności od kontekstu. Na przykład:
Python/C API
)W każdym razie API nie jest kodem Pythona. To opis, który może być mniej lub bardziej formalny.
źródło
Tylko pakiet i moduł mają dobrze zdefiniowane znaczenie specyficzne dla Pythona.
API nie jest zbiorem kodu per se - to bardziej jak „Protocol” specyfikacji jak różne części (zwykle biblioteki) komunikują się ze sobą. W Pythonie jest kilka godnych uwagi „standardowych” interfejsów API. Np. API DB
Moim zdaniem biblioteka to wszystko, co nie jest aplikacją - w Pythonie biblioteka to moduł - zwykle z submodułami . Zakres biblioteki jest bardzo zmienna - na przykład standardowej biblioteki Pythona jest ogromna (z dość kilka submodułów), podczas gdy istnieje wiele bibliotek pojedynczych cel w PyPI, np backportu z
collections.OrderedDict
za py <2,7Pakiet jest zbiorem modułów Pythona w ramach wspólnej przestrzeni nazw. W praktyce jeden jest tworzony poprzez umieszczenie wielu modułów Pythona w katalogu ze specjalnym
__init__.py
modułem (plikiem).Moduł jest pojedynczy plik kodu Pythona, który ma być importowany . Jest to trochę uproszczenie, ponieważ w praktyce sporo modułów wykrywa, kiedy są uruchamiane jako skrypt i robi w tym przypadku coś specjalnego.
Skrypt jest pojedynczy plik kodu Pythona, który ma być wykonywany jako program „głównego”.
Jeśli masz zestaw kodu obejmujący wiele plików, prawdopodobnie masz aplikację zamiast skryptu.
źródło
Biblioteka: jest to zbiór modułów.
(Biblioteka zawiera wbudowane moduły (napisane w C) + moduły napisane w Pythonie).
Moduł: każdy z zestawu znormalizowanych części lub niezależnych jednostek, które można wykorzystać do zbudowania bardziej złożonej struktury.
Mówiąc w nieformalnym języku, moduł to zestaw wierszy kodu, które są używane w określonym celu i mogą być używane w innych programach w takiej postaci, aby uniknąć DRY ( D on't R epeat Y siebie) jako zespół i skupienie się na główny wymóg. źródło
API to interfejs umożliwiający innym aplikacjom interakcję z biblioteką bez bezpośredniego dostępu.
Pakiet to w zasadzie katalog z plikami.
Skrypt oznacza serię poleceń w jednym pliku.
źródło
Spróbuję odpowiedzieć na to pytanie bez używania terminów, których używaliby najwcześniejsi początkujący, i wyjaśnić, dlaczego lub w jaki sposób używali ich inaczej, wraz z najbardziej „oficjalnym” i / lub najbardziej zrozumiałym lub jednolitym użyciem tych terminów.
Może to być zagmatwane i pomyliłem się, myśląc zbyt mocno, więc nie myśl o tym zbyt wiele. W każdym razie kontekst ma ogromne znaczenie.
Biblioteka - najczęściej będzie odnosić się do biblioteki ogólnej lub innej kolekcji utworzonej w podobnym formacie i zastosowaniu. Biblioteka ogólna to suma „standardowych”, popularnych i szeroko używanych modułów, które można na razie traktować jako narzędzia jednoplikowe lub skróty umożliwiające lub przyspieszające. Biblioteka ogólna jest opcją, którą większość ludzi włącza podczas instalowania Pythona. Ponieważ ma tę nazwę „Biblioteka ogólna Pythona”, jest często używana z podobną strukturą i pomysłami. Witch to po prostu posiadanie kilku modułów, może nawet pakietów zgrupowanych razem, zwykle na liście. Lista zwykle służy do ich pobrania. Zwykle są to tylko powiązane pliki o podobnych zainteresowaniach. Najłatwiej to opisać.
Moduł - moduł odnosi się do pliku. Plik zawiera skrypt „w sobie”, a nazwa pliku to nazwa modułu, pliki w Pythonie kończą się na .py. Wszystko, co zawiera plik, to kod, który działając razem sprawia, że coś się dzieje, używając funkcji, łańcuchów znaków itp. Główne moduły, które prawdopodobnie widzisz najczęściej, są popularne, ponieważ są to specjalne moduły, które mogą pobierać informacje z innych plików / modułów. Jest to mylące, ponieważ nazwy pliku i modułu są równe i po prostu upuść plik .py. Naprawdę to tylko kod, którego możesz użyć jako skrótu napisanego przez kogoś, aby coś było łatwiejsze lub możliwe.
Pakiet - jest to termin używany ogólnie, chociaż kontekst ma znaczenie. Z mojego doświadczenia wynika, że najczęstszym zastosowaniem jest wiele modułów (lub plików), które są zgrupowane razem. Powody, dla których są zgrupowane, może wynikać z kilku powodów - wtedy liczy się kontekst. Oto sposoby, w jakie zwróciłem uwagę na termin pakiet (y)używany. Stanowią grupę pobranych, utworzonych i / lub przechowywanych modułów. Które mogą być prawdziwe lub tylko 1, ale tak naprawdę jest to tylko plik, który odwołuje się do innych plików, które muszą mieć poprawną strukturę lub format, a cała suma to sam pakiet, zainstalowany lub mógł być uwzględniony w Biblioteka ogólna Pythona. Pakiet może zawierać moduły (pliki .py), ponieważ zależą one od siebie i czasami mogą nie działać poprawnie lub wcale. Każda część (moduł / plik) pakietu ma zawsze wspólny cel, a całkowitą sumą wszystkich części jest sam pakiet.
Najczęściej w Pythonie pakiety są modułami, ponieważ nazwa pakietu to nazwa modułu, który jest używany do łączenia wszystkich elementów. Możesz więc wprowadzić pakiet, ponieważ jest to moduł, pozwala również na wywoływanie innych modułów, które nie są pakietami, ponieważ wykonują tylko określoną funkcję lub zadanie nie obejmuje innych plików. Pakiety mają cel, a każdy moduł współpracuje, aby osiągnąć ten ostateczny cel.
Większość nieporozumień wynika z prostej nazwy pliku lub prefiksu pliku, używanego jako nazwa modułu, a następnie ponownie nazwa pakietu.
Pamiętaj, że można zainstalować moduły i pakiety. Biblioteka jest zazwyczaj ogólnym terminem określającym listę lub formatowanie grupy modułów i pakietów. Podobnie jak ogólna biblioteka Pythona. Hierarchia by nie działała, interfejsy API tak naprawdę nie należą, a gdyby tak było, mogłyby być wszędzie i każdy towar zawierający Skrypt, Moduł i Pakiety. siedzieć nad lub pod nim. Niektóre moduły mogą być oparte na innym kodzie i myślę, że jest to jedyny przypadek, w którym odnosi się to do dyskusji związanej z czystym Pythonem.
źródło