Python moduli: naučite se ustvarjati in uvoziti po meri in vgrajene module

V tem članku se boste naučili ustvarjati in uvažati module po meri v Pythonu. Našli boste tudi različne tehnike za uvoz in uporabo prilagojenih in vgrajenih modulov v Pythonu.

Video: Python moduli

Kaj so moduli v Pythonu?

Moduli se nanašajo na datoteko, ki vsebuje izjave in definicije Python.

Datoteka, ki vsebuje kodo Python, na primer:, example.pyse imenuje modul in ime modula bi bilo example.

Module uporabljamo za razčlenitev velikih programov na majhne obvladljive in organizirane datoteke. Poleg tega moduli omogočajo ponovno uporabo kode.

V modulu lahko definiramo svoje najpogosteje uporabljene funkcije in jih uvozimo, namesto da bi njihove definicije kopirali v različne programe.

Ustvarimo modul. Vnesite naslednje in ga shranite kot example.py.

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

Tu smo definirali funkcijo add()znotraj modula z imenom example. Funkcija sprejme dve številki in vrne njihovo vsoto.

Kako uvoziti module v Python?

Definicije znotraj modula lahko uvozimo v drug modul ali interaktivni tolmač v Pythonu.

Za to uporabljamo importključno besedo. Za uvoz našega predhodno definiranega modula examplev poziv Python vtipkamo naslednje.

 >>> import example

To ne uvozi imen funkcij, definiranih v exampleneposredno v trenutni tabeli simbolov. Tam uvozi samo ime modula example.

Z imenom modula lahko dostopamo do funkcije s pomočjo pikčastega .operatorja. Na primer:

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

Python ima na tone standardnih modulov. Oglejte si celoten seznam standardnih modulov Python in primere njihove uporabe. Te datoteke so v imeniku Lib znotraj lokacije, kjer ste namestili Python.

Standardne module lahko uvozite na enak način kot uvozimo uporabniško določene module.

Obstajajo različni načini za uvoz modulov. Spodaj so navedeni …

Izjava o uvozu Pythona

Modul lahko uvozimo s pomočjo importstavka in dostopamo do definicij v njem z uporabo pikčastega operatorja, kot je opisano zgoraj. Tu je primer.

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

Ko zaženete program, bo rezultat:

 Vrednost pi je 3,141592653589793

Uvoz s preimenovanjem

Modul lahko uvozimo tako, da ga preimenujemo na naslednji način:

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

mathModul smo preimenovali v m. To nam lahko v nekaterih primerih prihrani čas tipkanja.

Upoštevajte, da ime mathni prepoznano v našem obsegu. Zato math.pije neveljavna in m.pije pravilna izvedba.

Python iz … izjave o uvozu

Iz modula lahko uvozimo določena imena, ne da bi ga uvažali kot celoto. Tu je primer.

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

Tu smo piiz mathmodula uvozili samo atribut .

V takih primerih ne uporabljamo operatorja pik. Uvažamo lahko tudi več atributov, kot sledi:

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

Uvozi vsa imena

Vsa imena (definicije) lahko iz modula uvozimo z naslednjo konstrukcijo:

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

Tu smo uvozili vse definicije iz matematičnega modula. Sem spadajo vsa imena, ki so vidna v našem obsegu, razen tistih, ki se začnejo s podčrtajem (zasebne opredelitve).

Uvoz vsega z zvezdico (*) ni dobra programska praksa. To lahko privede do podvojenih definicij identifikatorja. Prav tako ovira berljivost naše kode.

Pot iskanja modula Python

Med uvozom modula Python pogleda na več krajev. Tolmač najprej išče vgrajen modul. Nato (če vgrajenega modula ni mogoče najti) Python pregleda seznam imenikov, definiranih v sys.path. Iskanje je v tem vrstnem redu.

  • Trenutni imenik.
  • PYTHONPATH (spremenljivka okolja s seznamom imenikov).
  • Od namestitve odvisen privzeti imenik.
 >>> uvoz sys >>> sys.path ('', 'C: \ Python33 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLL-ji ',' C: \ Python33 \ lib ',' C: \ Python33 ',' C: \ Python33 \ lib \ spletna paketa ')

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

S pomočjo dir()funkcije lahko poiščemo imena, ki so definirana znotraj modula.

Na primer, add()v modulu examplesmo definirali funkcijo, ki smo jo imeli na začetku.

Mi lahko uporabite dirv examplemodulu na naslednji način:

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

Tu lahko vidimo razvrščen seznam imen (skupaj z add). Vsa druga imena, ki se začnejo s podčrtaji, so privzeti atributi Python, povezani z modulom (niso uporabniško določeni).

__name__Atribut na primer vsebuje ime modula.

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

Vsa imena, določena v našem trenutnem imenskem prostoru, je mogoče najti s pomočjo dir()funkcije brez kakršnih koli argumentov.

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

Zanimive Članki...