1. ProgrammeringPythonHvad er et Python-modul?

Af Alan Shovic, John Shovic

For alle hoopla om Python-moduler er et modul faktisk en temmelig enkel ting. Faktisk er et Python-modul blot en fil med en .py-udvidelse, der indeholder Python-kode. Det er det. Så hver gang du skriver Python-kode og gemmer den i en .py-fil, har du dybest set oprettet et modul.

Det er ikke at sige, at du altid skal bruge denne kode som et modul. Det kan bestemt behandles som en uafhængig app. Men hvis du ville oprette dit eget Python-modul, med bare en kode, som du ofte har brug for i dit eget arbejde, kunne du bestemt gøre det.

programmering af Python-moduler

Et Python-modul er også bare en fil med filtypenavnet .py. Modulets navn er det samme som filnavnet (uden .py). Som enhver .py-fil indeholder modulet Python-kode. Lad os som et fungerende eksempel antage, at du vil have tre funktioner til at forenkle formateringsdatoer og valutaværdier. Du kan sammensætte ethvert navn, du kan lide for hver funktion. Til vores arbejdseksempel bruger vi disse tre navne:

  • to_date (any_str): Giver dig mulighed for at videregive en hvilken som helst streng (any_str) -dato i mm / dd / åååå eller mm / dd / åååå-format og sender et Python-datetime.date tilbage, som du kan bruge til datoberegninger. mdy (any_date): Giver dig mulighed for at videregive en hvilken som helst Python-dato eller datetime, og returnerer en strengdato, der er formateret i mm / dd / åååå-format til visning på skærmen. to_curr (any_num, len): Giver dig mulighed for at give et hvilket som helst Python-float- eller heltalnummer og returnerer en streng med et førende dollartegn, kommaer i tusinder steder og to cifre for øre. Len er et valgfrit tal for længde. Hvis der er angivet, vil returværdien være polstret til venstre med mellemrum, der svarer til den angivne længde

Så her er alle koder til det:

# Indeholder tilpassede funktioner til datoer og valutaværdier.
import datetime som dt
def to_date (any_str):
"" "Konverter mm / dd / åååå eller mm / dd / åååå streng til datetime.date, eller Ingen, hvis ugyldig dato." ""
prøve:
hvis len (any_str) == 10:
the_date = dt.datetime.strptime (any_str, '% m /% d /% Y'). dato ()
andet:
the_date = dt.datetime.strptime (any_str, '% m /% d /% y'). dato ()
undtagen (ValueError, TypeError):
the_date = Ingen
returner datoen
def mdy (any_date):
"" "Returnerer en strengdato i mm / dd / åååå-format. Gå i Python-dato eller strengdato i mm / dd / åååå-format" ""
if type (any_date) == str:
any_date = to_date (anydate)
# Sørg for, at det er en dato, der videresendes
hvis isinstance (any_date, dt.date):
s_date = f "{any_date: '% m /% d /% Y'}"
andet:
s_date = "Ugyldig dato"
returner s_date
def to_curr (anynum, len = 0):
"" "Returnerer et tal som en streng med $ og kommaer. Længde er valgfri" ""
s = "Ugyldigt beløb"
prøve:
x = flydende (anynum)
undtagen ValueError:
x = Ingen
hvis isinstance (x, float):
s = '$' + f "{x:,. 2f}"
hvis len> 0:
s = s.rjust (len)
vender tilbage

Du kan oprette den samme fil selv og navngive den til myfunctions.py, hvis du vil følge med. Bemærk, at filen kun indeholder funktioner. Så hvis du kører det, gør det ikke noget på skærmen, fordi der ikke er nogen kode derinde, der kalder nogen af ​​disse funktioner.

For at bruge disse funktioner i en hvilken som helst Python-app eller -program, du skriver, skal du først sørge for at kopiere den myfunc.py-fil til den samme mappe som resten af ​​Python-koden, som du skriver. Når du opretter en ny side, kan du derefter importere myfunc som et modul, ligesom du ville gøre et andet modul oprettet af en anden. Bare brug

import myfunc

Du bliver nødt til at bruge modulnavnet foran nogen af ​​de funktioner, du kalder fra dette modul. Så hvis du vil gøre koden lidt mere læsbar, kan du bruge denne i stedet:

import myfunc som min

Med det som din åbningslinje kan du henvise til enhver funktion i dit tilpassede Python-modul med mit. som præfiks. For eksempel my.to_date () for at kalde to_date-funktionen. Her er en side, der importerer modulet og derefter tester alle tre funktioner vha. Min syntaks:

# Importer al koden fra myfunc.py som min.
import myfunc som min
# Brug for datoer i denne kode
fra datetime import datetime som dt
# Nogle enkle testdata.
string_date = "2019/12/31"
# Konverter strengdato til datetime.date
print (my.to_date (string_date))
i dag = dt.dag ()
# Vis dagens dato i mm / dd / åååå-format.
print (my.mdy (i dag))
dollar_amt = 12345.678
# Vis dette store antal i valutaformat.
print (my.to_curr (dollar_amt))

Du kan også springe ved hjælp af præfikset, hvis du importerer emner efter navn. I dette tilfælde betyder det, at du kan kalde to_date () og mdy () og to_curr () uden at bruge my. præfiks. Den første kodelinje skulle være

fra myfunc import til_dato, mdy, til_curr

Resten af ​​koden ville være den samme som i det foregående eksempel, medmindre du kan forlade my. præfikser som i følgende kode:

# Importer al koden fra myfunc.py med navn.
fra myfunc import til_dato, mdy, til_curr
# Brug for datoer i denne kode
fra datetime import datetime som dt
# Nogle enkle testdata.
string_date = "2019/12/31"
# Konverter strengdato til datetime.date
print (TO_DATE (string_date))
i dag = dt.dag ()
# Vis dagens dato i mm / dd / åååå-format.
print (MDY (i dag))
dollar_amt = 12345.678
# Vis dette store antal i valutaformat.
print (to_curr (dollar_amt))

Tjek disse 10 fantastiske Python-programmeringsressourcer for mere information.