Argumente
Funcțiile pot primi informații din exterior prin argumente.
Argumentele se scriu între parantezele de după numele funcției. Nu există o limită fixă pentru câte poți adăuga; doar pune o virgulă între ele.
Funcția din exemplul următor are un singur argument, fname. Fiecare apel îi transmite un prenume, iar funcția folosește acel prenume ca să afișeze numele complet.
Exemplu
Un argument, trei apeluri:
fname ca parametru și afișează numele urmat de "Refsnes".
Apeleaz-o cu "Emil", "Tobias" și "Linus".
Ieșire: program Python complet
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Parametri vs argumente
Oamenii folosesc adesea parametru și argument ca termeni interschimbabili, deoarece ambii înseamnă informații transmise unei funcții.
Din perspectiva funcției:
Parametrul este variabila scrisă între parantezele din definiția funcției.
Argumentul este valoarea reală pe care funcția o primește când cineva o apelează.
def my_function(name): # name is a parameter
print("Hello", name)
my_function("Emil") # "Emil" is an argument
Numărul de argumente
În mod normal, numărul de argumente dintr-un apel trebuie să corespundă cu ce așteaptă funcția.
O funcție care are nevoie de 2 argumente trebuie să primească exact 2.
Dă-i mai multe sau mai puține și Python raportează o eroare.
Exemplu
Această funcție are nevoie de 2 argumente și primește 2:
fname și lname și le afișează împreună.
Apeleaz-o cu "Emil" și "Refsnes".
Ieșire: program Python complet
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Exemplu
Aceasta are nevoie de 2 argumente, dar primește doar 1:
fname și lname, apoi apeleaz-o doar cu "Emil".
Ieșire: program Python complet
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
Valori implicite ale parametrilor
Un parametru poate avea o valoare implicită. Funcția recurge la acea valoare ori de câte ori un apel omite argumentul:
Exemplu
name = "prieten" care afișează un salut.
Apeleaz-o cu "Emil", "Tobias", fără argument și cu "Linus".
Ieșire: program Python complet
def my_function(name = "prieten"):
print("Salut", name)
my_function("Emil")
my_function("Tobias")
my_function()
my_function("Linus")
Exemplu
Un parametru country cu valoare implicită:
country = "Norway" care afișează „Sunt din” urmat de țară.
Apeleaz-o cu "Sweden", "India", fără argument și cu "Brazil".
Ieșire: program Python complet
def my_function(country = "Norway"):
print("Sunt din", country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Argumente cu cuvânt-cheie
Argumentele pot fi trimise și în forma cheie = valoare.
Deoarece fiecare valoare este etichetată cu numele ei, ordinea în care le scrii nu mai contează.
Documentația Python prescurtează adesea Keyword Arguments (argumente cu cuvânt-cheie) ca kwargs.
Exemplu
animal și name și afișează informații despre un animal de companie.
Apeleaz-o folosind argumentele cu cuvânt-cheie animal = "câine" și name = "Buddy".
Ieșire: program Python complet
def my_function(animal, name):
print("Am un", animal)
print("Numele animalului", animal, "este", name)
my_function(animal = "câine", name = "Buddy")
Exemplu
animal și name.
Apeleaz-o cu argumente cu cuvânt-cheie în ordine inversă: name = "Buddy", animal = "câine".
Ieșire: program Python complet
def my_function(animal, name):
print("Am un", animal)
print("Numele animalului", animal, "este", name)
my_function(name = "Buddy", animal = "câine")
Argumente poziționale
Argumentele transmise fără cuvinte-cheie se numesc argumente poziționale.
Python le asociază cu parametrii după poziție, așa că trebuie să fie în ordinea corectă.
Dacă le inversezi, obții alt rezultat.
Exemplu
animal și name.
Apeleaz-o cu argumentele poziționale "câine" și "Buddy".
Ieșire: program Python complet
def my_function(animal, name):
print("Am un", animal)
print("Numele animalului", animal, "este", name)
my_function("câine", "Buddy")
Exemplu
Schimbarea ordinii dă un rezultat diferit:
Ieșire: program Python complet
def my_function(animal, name):
print("Am un", animal)
print("Numele animalului", animal, "este", name)
my_function("Buddy", "câine")
Combinarea argumentelor poziționale și a celor cu cuvânt-cheie
Un singur apel de funcție poate folosi atât argumente poziționale, cât și argumente cu cuvânt-cheie.
Singura regulă este ca cele poziționale să fie primele:
Exemplu
animal, name și age.
Apeleaz-o combinând argumente poziționale și argumente cu cuvânt-cheie.
Ieșire: program Python complet
def my_function(animal, name, age):
print("Am un", animal, "de", age, "ani, pe nume", name)
my_function("câine", name = "Buddy", age = 5)
Transmiterea diferitelor tipuri de date
Argumentele pot fi de orice tip de date: șir, număr, listă, dicționar și așa mai departe.
În interiorul funcției, valoarea păstrează același tip pe care îl avea când ai trimis-o:
Exemplu
Transmiterea unei liste către o funcție:
["apple", "banana", "cherry"].
Ieșire: program Python complet
def my_function(fruits):
for fruit in fruits:
print(fruit)
my_fruits = ["apple", "banana", "cherry"]
my_function(my_fruits)
Exemplu
Transmiterea unui dicționar către o funcție:
{"name": "Emil", "age": 25}.
Ieșire: program Python complet
def my_function(person):
print("Nume:", person["name"])
print("Vârstă:", person["age"])
my_person = {"name": "Emil", "age": 25}
my_function(my_person)
Valori returnate
Instrucțiunea return îi permite unei funcții să dea înapoi o valoare:
Exemplu
Ieșire: program Python complet
def my_function(x, y):
return x + y
result = my_function(5, 3)
print(result)
Returnarea diferitelor tipuri de date
O valoare returnată poate fi de orice tip de date, de exemplu o listă, un tuplu sau un dicționar.
Exemplu
Returnarea unei liste:
Ieșire: program Python complet
def my_function():
return ["apple", "banana", "cherry"]
fruits = my_function()
print(fruits[0])
print(fruits[1])
print(fruits[2])
Exemplu
Returnarea unui tuplu:
Ieșire: program Python complet
def my_function():
return (10, 20)
x, y = my_function()
print("x:", x)
print("y:", y)
Argumente doar poziționale
O funcție poate cere să primească DOAR argumente poziționale.
Faci asta adăugând , / după argumente, așa cum arată primul exemplu.
Fără , /, cei care o apelează pot folosi argumente cu cuvânt-cheie, chiar și pentru o funcție gândită pentru argumente poziționale, ca în al doilea exemplu.
Odată ce , / este prezent, transmiterea unui argument cu cuvânt-cheie provoacă o eroare, așa cum demonstrează al treilea exemplu.
Exemplu
/.
Apeleaz-o cu un argument pozițional.
Ieșire: program Python complet
def my_function(name, /):
print("Salut", name)
my_function("Emil")
Exemplu
/, o funcție acceptă argumente cu cuvânt-cheie.
Definește o funcție cu name și apeleaz-o cu name = "Emil".
Ieșire: program Python complet
def my_function(name):
print("Salut", name)
my_function(name = "Emil")
Exemplu
name, / și apeleaz-o cu name = "Emil".
Ieșire: program Python complet
def my_function(name, /):
print("Salut", name)
my_function(name = "Emil")
Argumente doar cu cuvânt-cheie
Ca să accepți doar argumente cu cuvânt-cheie, pune *, înaintea argumentelor, ca în primul exemplu.
Fără *,, cei care o apelează pot transmite argumente poziționale, chiar dacă funcția a fost gândită pentru cuvinte-cheie. Al doilea exemplu face asta.
Cu *, la locul lui, un argument pozițional provoacă o eroare, așa cum arată al treilea exemplu.
Exemplu
*,.
Apeleaz-o cu name = "Emil".
Ieșire: program Python complet
def my_function(*, name):
print("Salut", name)
my_function(name = "Emil")
Exemplu
*,, o funcție acceptă argumente poziționale.
Definește o funcție cu name și apeleaz-o cu "Emil".
Ieșire: program Python complet
def my_function(name):
print("Salut", name)
my_function("Emil")
Exemplu
*, name și apeleaz-o cu "Emil".
Ieșire: program Python complet
def my_function(*, name):
print("Salut", name)
my_function("Emil")
Combinarea argumentelor doar poziționale și doar cu cuvânt-cheie
O funcție poate folosi ambele tipuri împreună.
Tot ce este înainte de / trebuie să fie pozițional, iar tot ce este după * trebuie transmis prin cuvânt-cheie:
Exemplu
/ și * pentru a impune tipurile de argumente și returnează suma.
Ieșire: program Python complet
def my_function(a, b, /, *, c, d):
return a + b + c + d
result = my_function(5, 10, c = 15, d = 20)
print(result)