Grunderna i Python-funktioner

Slutförd

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 Noneimplicit . 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'