Funcții în Python
O funcție este un bloc de cod care rulează numai atunci când este apelat.
Puteți trece date, cunoscute sub numele de parametri, într-o funcție.
O funcție poate returna datele ca urmare.
Crearea unei funcții
În Python, o funcție este definită folosind cuvântul cheie def :
Exemplu
def my_function():
print("Hello from a function")
Apelarea unei funcții
Pentru a apela o funcție, utilizați numele funcției urmată de paranteză:
Exemplu
def my_function():
print("Hello from a function")
my_function()
Argumente
Informațiile pot fi transmise în funcții ca argumente.
Argumentele sunt specificate după numele funcției, în interiorul parantezelor. Puteți adăuga oricâte argumente doriți, doar separați-le cu virgulă.
Următorul exemplu are o funcție cu un singur argument (fname). Când funcția este numită, trecem de-a lungul unui nume, care este utilizat în interiorul funcției pentru a tipări numele complet:
Exemplu
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Argumentele sunt adesea scurtate la arg în documentațiile Python.
Parametri sau argumente?
Termenii parametru și argument pot fi folosiți pentru același lucru: informații transmise într-o funcție.
Din perspectiva unei funcții:
Un parametru este variabila listată în paranteze în definiția funcției.
Un argument este valoarea care este trimisă funcției atunci când este apelată.
Număr de argumente
În mod implicit, o funcție trebuie să fie apelată cu numărul corect de argumente. În sensul că, dacă funcția dvs. așteaptă 2 argumente, trebuie să apelați funcția cu 2 argumente, nu mai mult și nu mai puțin.
Exemplu
Această funcție așteaptă 2 argumente și primește 2 argumente:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Dacă încercați să apelați funcția cu 1 sau 3 argumente, veți primi o eroare:
Exemplu
Această funcție așteaptă 2 argumente, dar primește doar 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
Argumente arbitrale, * args
Dacă nu știți câte argumente care vor fi transmise în funcția dvs., adăugați un *
nume înainte de parametru în definiția funcției.
Astfel , funcția va primi un tuplu de argumente, și pot avea acces la elementele în consecință:
Exemplu
Dacă numărul de argumente este necunoscut, adăugați o *
înainte de numele parametrului:
def my_function(*kids):
print("The youngest child is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Argumentele arbitrale sunt adesea scurtate la * arg în documentațiile Python.
Argumente cuvinte cheie
Puteți trimite, de asemenea, argumente cu sintaxa cheie = valoare .
În acest fel ordinea argumentelor nu contează.
Exemplu
def my_function(child3, child2, child1):
print("The youngest child is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
Fraza Argumentele cuvinte cheie sunt adesea prescurtat kwargs în documentații Python.
Argumente cu cuvinte cheie arbitrale, ** kwargs
Dacă nu știți câte argumente de cuvinte cheie care vor fi transmise în funcția dvs., adăugați două asterisk: **
înainte de numele parametrului din definiția funcției.
Astfel funcția va primi un dicționar de argumente și poate accesa elementele în consecință:
Exemplu
Dacă numărul de argumente de cuvinte cheie nu este cunoscut, adăugați o dublă **
înainte de numele parametrului:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
Argumentele Kword arbitrale sunt adesea scurtate la ** kwargs în documentațiile Python.
Valoarea implicită a parametrilor
Următorul exemplu arată cum se utilizează o valoare a parametrului implicit.
Dacă apelăm funcția fără argument, aceasta folosește valoarea implicită:
Exemplu
def my_function(country = "Norway"):
print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Trecerea unei liste ca argument
Puteți trimite orice tip de date de argumente unei funcții (șir, număr, listă, dicționar etc.), iar acesta va fi tratat ca același tip de date în interiorul funcției.
De exemplu, dacă trimiteți o listă ca argument, aceasta va rămâne o listă când va atinge funcția:
Exemplu
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
Valori de retur
Pentru a permite unei funcții să returneze o valoare, utilizați return
instrucțiunea:
Exemplu
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
Declarația de trecere
function
definițiile nu pot fi goale, dar dacă, din anumite motive, aveți o function
definiție fără conținut, introduceți pass
instrucțiunea pentru a evita să primiți o eroare.
Exemplu
def myfunction():
pass
Recursivitate
Python acceptă, de asemenea, recurenta funcției, ceea ce înseamnă că o funcție definită se poate numi singură.
Recursiunea este un concept comun matematic și de programare. Înseamnă că o funcție se numește. Aceasta are beneficiul de a însemna că puteți bucla prin date pentru a ajunge la un rezultat.
Dezvoltatorul ar trebui să fie foarte atent cu recursivitatea, deoarece poate fi destul de ușor să alunecați la scrierea unei funcții care nu se termină niciodată sau care utilizează cantități excesive de memorie sau putere a procesorului. Cu toate acestea, atunci când scrierea corectă, recursiunea poate fi o abordare foarte eficientă și elegantă din punct de vedere matematic al programării.
În acest exemplu, tri_recursion () este o funcție pe care am definit-o să o numim singură ("recurse"). Folosim variabila k ca date, care scade ( -1 ) de fiecare dată când facem recurs. Recursul se încheie când condiția nu este mai mare de 0 (adică atunci când este 0).
Pentru un nou dezvoltator poate dura ceva timp pentru a afla cum funcționează exact acest lucru, cea mai bună metodă de a afla este testând și modificând-o.
Exemplu
Exemplu de recurs
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(6)