Grunderna i Python-funktioner
Funktioner är nästa steg när du har lärt dig grunderna i Python-programmering. I sin enklaste form innehåller en funktion kod som alltid returnerar ett värde (eller värden). I vissa fall har en funktion också valfria eller obligatoriska indata.
När du börjar skriva kod som duplicerar andra delar av programmet blir det ett perfekt tillfälle att extrahera koden till en funktion. Även om det är användbart att dela vanlig kod via funktioner kan du också begränsa kodstorleken genom att extrahera delar till mindre (mer läsbara) funktioner.
Program som undviker duplicering och förhindrar stora funktioner med hjälp av mindre funktioner är mer läsbara och underhållsbara. De är också lättare att felsöka när saker och ting inte fungerar som de ska.
Flera regler om funktionsindata är viktiga för att du ska kunna dra nytta av allt som funktioner har att erbjuda.
Viktigt!
Även om vi använder termen indata för att beskriva vilka funktioner som används kallas dessa element vanligtvis argument eller parametrar. För konsekvens i den här modulen refererar vi till indata som argument.
Funktioner utan argument
Om du vill skapa en funktion använder du nyckelordet def
följt av ett namn, parenteser och sedan brödtexten med funktionskoden:
def rocket_parts():
print("payload, propellant, structure")
I det här fallet rocket_parts
är namnet på funktionen. Det namnet följs av de tomma parenteserna, som anger att inga argument behövs. Sist är koden, indragen med fyra blanksteg. Om du vill använda funktionen måste du anropa den med dess namn med parenteser:
rocket_parts()
payload, propellant, structure
Funktionen rocket_parts()
tar inga argument och skriver ut en instruktion. Om du behöver använda ett värde som en funktion returnerar kan du tilldela funktionsutdata till en variabel:
output = rocket_parts()
payload, propellant, structure
output is None
True
Det kan verka förvånande att värdet för variabeln output
är None
. Det beror på att funktionen inte uttryckligen rocket_parts()
returnerade ett värde. Om en funktion inte uttryckligen returnerar ett värde i Python returneras None
implicit . Om du uppdaterar funktionen för att returnera strängen i stället för att skriva ut den får variabeln output
ett annat värde:
def rocket_parts():
return "payload, propellant, structure"
output = rocket_parts()
output
payload, propellant, structure
Om du behöver använda värdet för en funktion måste den funktionen returneras explicit. Annars None
returneras.
Kommentar
Du behöver inte alltid tilldela en funktions retur. I de flesta fall där en funktion inte uttryckligen returnerar ett värde (eller värden) innebär det att du inte behöver tilldela eller använda det implicita None
som returneras.
Obligatoriska och valfria argument
I Python kräver flera inbyggda funktioner argument. Vissa inbyggda funktioner gör argument valfria. Inbyggda funktioner är omedelbart tillgängliga, så du behöver inte importera dem explicit.
Ett exempel på en inbyggd funktion som kräver ett argument är any()
. Den här funktionen tar en itererbar (till exempel en lista) och returnerar True
om något objekt i iterabeln är True
. Annars returneras False
.
any([True, False, False])
True
any([False, False, False])
False
Om du anropar any()
utan argument genereras ett användbart undantag. Felmeddelandet förklarar att du behöver minst ett argument:
any()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: any() takes exactly one argument (0 given)
Du kan kontrollera att vissa funktioner tillåter användning av valfria argument med hjälp av en annan inbyggd funktion som heter str()
. Den här funktionen skapar en sträng från ett argument. Om inget argument skickas returneras en tom sträng:
str()
''
str(15)
'15'