1. ProgrammingPythonŠto je Python modul?

Autor Alan Shovic, John Shovic

Za sve hupote oko Python modula, modul je zapravo prilično jednostavna stvar. U stvari, Python modul je samo datoteka s .py nastavkom koja sadrži Python kod. To je to. Tako da svaki put kada napišete Python kôd i spremite ga u .py datoteku, u osnovi ste kreirali modul.

To ne znači da taj kôd uvijek morate koristiti kao modul. To se sigurno može tretirati kao samostalna aplikacija. Ali ako biste željeli stvoriti vlastiti Python modul, sa pravednim kodom koji vam često treba u svom radu, to biste sigurno mogli učiniti.

programiranje Python modula

Python modul je također samo datoteka s nastavkom .py datoteke. Naziv modula jednak je nazivu datoteke (bez .py). Kao i svaka .py datoteka, modul sadrži Python kod. Kao radni primjer, pretpostavimo da želite imati tri funkcije za pojednostavljenje oblikovanja datuma i vrijednosti valuta. Možete sastaviti bilo koje ime koje želite za svaku funkciju. Za svoj radni primjer koristit ćemo ova tri imena:

  • to_date (any_str): Omogućuje vam unošenje bilo kojeg niza (any_str) datuma u mm / dd / yy ili mm / dd / yyyy formatu i vraća natrag Python datetime.date koji možete koristiti za izračun datuma. mdy (any_date): Omogućuje vam prosljeđivanje bilo kojeg datuma ili datuma Pythona i vraća datum niza formatiran u mm / dd / yyyy formatu za prikaz na zaslonu. to_curr (any_num, len): omogućuje vam da unesete bilo koji Python float ili cijeli broj i vrati niz s vodećim znakom dolara, zarezima na tisućama mjesta i dvije znamenke za denar. Leća je izborni broj za duljinu. Ako je omogućeno, povratna vrijednost bit će podstavljena na lijevoj strani s razmacima koji se podudaraju s navedenom duljinom

Dakle, ovdje je sve šifra:

# Sadrži prilagođene funkcije za datume i vrijednosti valuta.
uvesti datum kao dt
def to_date (bilo koji_str):
"" "Pretvori mm / dd / yy ili mm / dd / yyyy niz u datetime.date, ili None, ako je datum nevaljan." "
probati:
ako je len (any_str) == 10:
the_date = dt.datetime.strptime (bilo koji_str, '% m /% d /% Y'). datum ()
drugo:
the_date = dt.datetime.strptime (bilo koji_str, '% m /% d /% y'). datum ()
osim (ValueError, TypeError):
the_date = Nema
vratite_datum
def mdy (any_date):
"" "Vraća datum niza u mm / dd / yyyy formatu. Proslijedi datum Python ili datum niza u mm / dd / yyyy formatu" ""
ako je tip (any_date) == str:
any_date = to_date (anydate)
# Obavezno proslijedite datum
ako je suština (any_date, dt.date):
s_date = f "{any_date: '% m /% d /% Y'}"
drugo:
s_date = "Nevažeći datum"
vratiti s_dat
def to_curr (anynum, len = 0):
"" "Vraća broj kao niz s $ i zarezima. Duljina je neobavezna" ""
s = "Nevažeći iznos"
probati:
x = float (anynum)
osim ValueError:
x = Ništa
ako je supstanca (x, pluta):
s = '$' + f "{x:,. 2f}"
ako je len> 0:
e = s.rjust (len)
povratak s

Istu datoteku možete sami izraditi i imenovati je myfunctions.py ako želite slijediti dalje. Primjetite da datoteka sadrži samo funkcije. Dakle, ako ga pokrenete, neće raditi ništa na zaslonu jer tamo nema koda koji poziva neku od tih funkcija.

Da biste koristili te funkcije u bilo kojoj aplikaciji Python ili programu koji pišete, prvo kopirajte myfunc.py datoteku u istu mapu kao i ostatak Python koda koji pišete. Zatim, kada stvorite novu stranicu, moju funkciju myfunc možete uvesti kao modul, baš kao i bilo koji drugi modul kreiran od strane nekoga drugog. Samo koristi

uvoz myfunc

Naziv modula morat ćete koristiti ispred bilo koje funkcije koju zovete iz tog modula. Ako želite kôd učiniti malo čitljivijim, možete umjesto toga koristiti:

uveze myfunc kao moj

Uz to kao svoju početnu liniju, možete se na bilo koju funkciju vašeg prilagođenog Python modula odnositi s mojom. kao prefiks. Na primjer, moj.to_date () za pozivanje funkcije to_date. Evo stranice koja uvozi modul, a zatim testira sve tri funkcije koristeći tu moju sintaksu:

# Uvezi sav kôd s myfunc.py kao moj.
uveze myfunc kao moj
# Trebate datume u ovom kodu
from import date date datetime kao dt
# Nekoliko jednostavnih podataka testa.
string_date = "2019/12/31"
# Pretvori niz niza u datetime.date
ispis (my.to_date (string_date))
danas = dt.today ()
# Prikaži današnji datum u formatu mm / dd / gggg
ispis (my.mdy (danas))
dollar_amt = 12345.678
# Pokaži ovaj veliki broj u obliku valute.
ispis (my.to_curr (dollar_amt))

Također možete preskočiti pomoću prefiksa ako uvozite stavke po imenu. U ovom slučaju, to znači da biste mogli nazvati to_date () i mdy () i to_curr (), a da ne koristite moj. prefiks. Trebao bi biti prvi redak koda

from myfunc uvoz to_date, mdy, to_curr

Ostatak koda bio bi isti kao u prethodnom primjeru, osim što možete isključiti moj. prefikse kao u sljedećem kodu:

# Uvozite svu šifru sa myfunc.py po imenu.
from myfunc uvoz to_date, mdy, to_curr
# Trebate datume u ovom kodu
from import date date datetime kao dt
# Nekoliko jednostavnih podataka testa.
string_date = "2019/12/31"
# Pretvori niz niza u datetime.date
ispis (TO_DATE (string_date))
danas = dt.today ()
# Prikaži današnji datum u formatu mm / dd / gggg
ispis (dmy (danas))
dollar_amt = 12345.678
# Pokaži ovaj veliki broj u obliku valute.
ispis (to_curr (dollar_amt))

Provjerite ovih 10 nevjerojatnih programskih resursa Python za više informacija.