1. ProgrammingPythonWat is een Python-module?

Door Alan Shovic, John Shovic

Voor alle hoopla over Python-modules is een module eigenlijk vrij eenvoudig. In feite is een Python-module gewoon een bestand met de extensie .py die Python-code bevat. Dat is het. Dus wanneer u Python-code schrijft en opslaat in een .py-bestand, hebt u in feite een module gemaakt.

Dat wil niet zeggen dat je die code altijd als module moet gebruiken. Het kan zeker worden behandeld als een zelfstandige app. Maar als je je eigen Python-module wilt maken, met alleen code die je vaak in je eigen werk nodig hebt, zou je dat zeker kunnen doen.

programmeren van Python-modules

Een Python-module is ook gewoon een bestand met de extensie .py. De naam van de module is hetzelfde als de bestandsnaam (zonder de .py). Zoals elk .py-bestand bevat de module Python-code. Laten we als voorbeeld aannemen dat u drie functies wilt hebben om het opmaken van datums en valutawaarden te vereenvoudigen. U kunt elke gewenste naam verzinnen voor elke functie. Voor ons werkvoorbeeld gebruiken we deze drie namen:

  • to_date (any_str): laat u elke string (any_str) datum doorgeven in mm / dd / jj of mm / dd / jjjj-formaat en stuurt een Python datetime.date terug die u kunt gebruiken voor datumberekeningen. mdy (any_date): hiermee kunt u elke Python-datum of -datetijd doorgeven en een tekenreeksdatum opmaken in de notatie mm / dd / jjjj voor weergave op het scherm. to_curr (any_num, len): Laat je een willekeurig Python-float- of geheel getal doorgeven en retourneert een string met een leidend dollarteken, komma's op duizenden plaatsen en twee cijfers voor de centen. De len is een optioneel nummer voor lengte. Indien opgegeven, wordt de retourwaarde links opgevuld met spaties die overeenkomen met de opgegeven lengte

Dus hier is alle code daarvoor:

# Bevat aangepaste functies voor datums en valutawaarden.
datetime importeren als dt
def to_date (any_str):
"" "Converteer mm / dd / jj of mm / dd / jjjj string naar datetime.date, of Geen indien ongeldige datum." ""
proberen:
if len (any_str) == 10:
the_date = dt.datetime.strptime (any_str, '% m /% d /% Y'). date ()
anders:
the_date = dt.datetime.strptime (any_str, '% m /% d /% y'). date ()
behalve (ValueError, TypeError):
the_date = Geen
geef de datum terug
def mdy (any_date):
"" "Retourneert een tekenreeksdatum in mm / dd / jjjj-formaat. Geef de Python-datum door of tekenreeksdatum in mm / dd / jjjj-formaat" ""
if type (any_date) == str:
any_date = to_date (anydate)
# Zorg ervoor dat het een datum is die wordt doorgestuurd
if isinstance (any_date, dt.date):
s_date = f "{any_date: '% m /% d /% Y'}"
anders:
s_date = "Ongeldige datum"
geef s_date terug
def to_curr (anynum, len = 0):
"" "Retourneert een getal als een tekenreeks met $ en komma's. Lengte is optioneel" ""
s = "Ongeldig bedrag"
proberen:
x = float (anynum)
behalve ValueError:
x = Geen
als isinstance (x, float):
s = '$' + f "{x:,. 2f}"
als len> 0:
s = s.rjust (len)
geeft terug

Je kunt zelf hetzelfde bestand maken en het mijnfunctions.py noemen als je het wilt volgen. Merk op dat het bestand alleen functies bevat. Dus als je het uitvoert, doet het niets op het scherm omdat er geen code in staat die een van die functies aanroept.

Als u deze functies wilt gebruiken in een Python-app of -programma dat u schrijft, moet u eerst dat myfunc.py-bestand naar dezelfde map kopiëren als de rest van de Python-code die u schrijft. Wanneer u vervolgens een nieuwe pagina maakt, kunt u myfunc als een module importeren, net zoals elke andere module die door iemand anders is gemaakt. Gebruik gewoon

import myfunc

U moet de modulenaam gebruiken voor een van de functies die u vanuit die module aanroept. Dus als u de code een beetje leesbaarder wilt maken, kunt u dit in plaats daarvan gebruiken:

importeer myfunc als mijn

Met dat als uw openingsregel, kunt u verwijzen naar elke functie in uw aangepaste Python-module met my. als het voorvoegsel. Bijvoorbeeld my.to_date () om de functie to_date aan te roepen. Hier is een pagina die de module importeert en vervolgens alle drie de functies test met behulp van mijn syntaxis:

# Importeer alle code van myfunc.py als mijn.
importeer myfunc als mijn
# Data nodig in deze code
van datetime importeer datetime als dt
# Enkele eenvoudige testgegevens.
string_date = "2019/12/31"
# Converteer string-datum naar datetime.date
afdrukken (my.to_date (string_date))
vandaag = dt.today ()
# Toon de datum van vandaag in mm / dd / jjjj-formaat.
afdrukken (my.mdy (vandaag))
dollar_amt = 12345.678
# Toon dit grote aantal in valutanotatie.
afdrukken (my.to_curr (dollar_amt))

U kunt ook overslaan met behulp van het voorvoegsel als u items op naam importeert. In dit geval betekent dit dat u to_date () en mdy () en to_curr () kunt aanroepen zonder de my. voorvoegsel. De eerste coderegel zou moeten zijn

van myfunc import to_date, mdy, to_curr

De rest van de code is hetzelfde als in het vorige voorbeeld, behalve dat u de mijn kunt weglaten. voorvoegsels zoals in de volgende code:

# Importeer alle code van myfunc.py op naam.
van myfunc import to_date, mdy, to_curr
# Data nodig in deze code
van datetime importeer datetime als dt
# Enkele eenvoudige testgegevens.
string_date = "2019/12/31"
# Converteer string-datum naar datetime.date
afdrukken (TO_DATE (string_date))
vandaag = dt.today ()
# Toon de datum van vandaag in mm / dd / jjjj-formaat.
afdrukken (MDY (vandaag))
dollar_amt = 12345.678
# Toon dit grote aantal in valutanotatie.
afdrukken (to_curr (dollar_amt))

Bekijk deze 10 geweldige programmeerbronnen voor Python voor meer informatie.