Moduły Pythona: naucz się tworzyć i importować niestandardowe i wbudowane moduły

W tym artykule dowiesz się, jak tworzyć i importować niestandardowe moduły w Pythonie. Znajdziesz także różne techniki importowania i używania niestandardowych i wbudowanych modułów w Pythonie.

Wideo: moduły Python

Co to są moduły w Pythonie?

Moduły odnoszą się do pliku zawierającego instrukcje i definicje języka Python.

Plik zawierający kod Pythona, na przykład example.py:, nazywany jest modułem, a jego nazwa modułu to example.

Używamy modułów do dzielenia dużych programów na małe, łatwe w zarządzaniu i zorganizowane pliki. Ponadto moduły zapewniają możliwość ponownego wykorzystania kodu.

Możemy zdefiniować nasze najczęściej używane funkcje w module i zaimportować je, zamiast kopiować ich definicje do różnych programów.

Stwórzmy moduł. Wpisz następujące informacje i zapisz jako example.py.

 # Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result

Tutaj zdefiniowaliśmy funkcję add()wewnątrz modułu o nazwie example. Funkcja przyjmuje dwie liczby i zwraca ich sumę.

Jak zaimportować moduły w Pythonie?

Możemy zaimportować definicje z modułu do innego modułu lub do interaktywnego interpretera w Pythonie.

W tym importcelu używamy słowa kluczowego. Aby zaimportować nasz wcześniej zdefiniowany moduł example, wpisujemy następujące polecenie w zachęcie Pythona.

 >>> import example

Nie importuje to nazw funkcji zdefiniowanych examplebezpośrednio w bieżącej tablicy symboli. Importuje exampletam tylko nazwę modułu .

Używając nazwy modułu, możemy uzyskać dostęp do funkcji za pomocą .operatora kropki . Na przykład:

 >>> example.add(4,5.5) 9.5

Python ma mnóstwo standardowych modułów. Możesz sprawdzić pełną listę standardowych modułów Pythona i ich przypadków użycia. Te pliki znajdują się w katalogu Lib wewnątrz lokalizacji, w której zainstalowano Pythona.

Standardowe moduły można importować w ten sam sposób, w jaki importujemy nasze moduły zdefiniowane przez użytkownika.

Istnieje wiele sposobów importowania modułów. Są one wymienione poniżej…

Instrukcja importu Pythona

Możemy zaimportować moduł za pomocą importinstrukcji i uzyskać dostęp do definicji w nim za pomocą operatora kropki, jak opisano powyżej. Oto przykład.

 # import statement example # to import standard module math import math print("The value of pi is", math.pi)

Po uruchomieniu programu wynik będzie następujący:

 Wartość pi to 3,141592653589793

Importuj ze zmianą nazwy

Możemy zaimportować moduł, zmieniając jego nazwę w następujący sposób:

 # import module by renaming it import math as m print("The value of pi is", m.pi)

Zmieniliśmy nazwę mathmodułu na m. W niektórych przypadkach może to zaoszczędzić nam czasu na pisanie.

Zauważ, że nazwa mathnie jest rozpoznawana w naszym zakresie. W związku z tym math.pijest nieprawidłowy i m.pijest poprawną implementacją.

Python z… import instrukcji

Możemy importować określone nazwy z modułu bez importowania modułu jako całości. Oto przykład.

 # import only pi from math module from math import pi print("The value of pi is", pi)

Tutaj zaimportowaliśmy tylko piatrybut z mathmodułu.

W takich przypadkach nie używamy operatora kropki. Możemy również importować wiele atrybutów w następujący sposób:

 >>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045

Importuj wszystkie nazwy

Możemy zaimportować wszystkie nazwy (definicje) z modułu za pomocą następującej konstrukcji:

 # import all names from the standard module math from math import * print("The value of pi is", pi)

Tutaj zaimportowaliśmy wszystkie definicje z modułu matematycznego. Obejmuje to wszystkie nazwy widoczne w naszym zakresie, z wyjątkiem tych zaczynających się od podkreślenia (definicje prywatne).

Importowanie wszystkiego z symbolem gwiazdki (*) nie jest dobrą praktyką programistyczną. Może to prowadzić do zduplikowanych definicji identyfikatora. Utrudnia również czytelność naszego kodu.

Ścieżka wyszukiwania modułu Pythona

Podczas importu modułu Python patrzy na kilka miejsc. Tłumacz najpierw szuka wbudowanego modułu. Następnie (jeśli nie znaleziono wbudowanego modułu), Python sprawdza listę katalogów zdefiniowanych w sys.path. Wyszukiwanie odbywa się w tej kolejności.

  • Bieżący katalog.
  • PYTHONPATH (zmienna środowiskowa z listą katalogów).
  • Katalog domyślny zależny od instalacji.
 >>> import sys >>> sys.path ('', 'C: \ Python33 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLLs ',' C: \ Python33 \ lib ',' C: \ Python33 ',' C: \ Python33 \ lib \ site-packages ')

We can add and modify this list to add our own path.

Reloading a module

The Python interpreter imports a module only once during a session. This makes things more efficient. Here is an example to show how this works.

Suppose we have the following code in a module named my_module.

 # This module shows the effect of # multiple imports and reload print("This code got executed")

Now we see the effect of multiple imports.

 >>> import my_module This code got executed >>> import my_module >>> import my_module

We can see that our code got executed only once. This goes to say that our module was imported only once.

Now if our module changed during the course of the program, we would have to reload it.One way to do this is to restart the interpreter. But this does not help much.

Python provides a more efficient way of doing this. We can use the reload() function inside the imp module to reload a module. We can do it in the following ways:

 >>> import imp >>> import my_module This code got executed >>> import my_module >>> imp.reload(my_module) This code got executed 

The dir() built-in function

Możemy użyć dir()funkcji, aby znaleźć nazwy zdefiniowane w module.

Na przykład zdefiniowaliśmy funkcję add()w module example, którą mieliśmy na początku.

dirW examplemodule możemy wykorzystać w następujący sposób:

 >>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')

Tutaj możemy zobaczyć posortowaną listę nazwisk (wraz z add). Wszystkie inne nazwy zaczynające się od podkreślenia są domyślnymi atrybutami Pythona skojarzonymi z modułem (nie zdefiniowanymi przez użytkownika).

Na przykład __name__atrybut zawiera nazwę modułu.

 >>> import example >>> example.__name__ 'example'

Wszystkie nazwy zdefiniowane w naszej bieżącej przestrzeni nazw można znaleźć za pomocą dir()funkcji bez żadnych argumentów.

 >>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')

Interesujące artykuły...