Lecții din modul (1/4)
def și întoarcere
O funcție este un bloc de cod reutilizabil: îl definiți o dată cu def,
apoi sună-l de câte ori vrei. Funcțiile fac codul modular,
testabil și auto-documentat.
Sintaxa de bază
def saluta(nome):
return f"Ciao, {nome}!"
saluta("Ada") # 'Ciao, Ada!'defintroduce funcția, urmată de numele și parametrii din parantezele.:deschide blocul indentat.returntrimite o valoare înapoi apelantului și încheie funcția.
return explicit vs None implicit
Dacă nu scrieți return, funcția returnează implicit None:
def stampa_e_basta(x):
print(x)
risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato) # NoneUn return (fără valoare) returnează, de asemenea, None, dar poate servi ca un
ieșire:
def primo_pari(nums):
for n in nums:
if n % 2 == 0:
return n
return None # explicit: communicates "not found"Valori multiple? Returnează un tuplu
Python nu are „parametri de ieșire”: pentru a returna mai mult de un lucru, returnați a tuplu (desea despachetat de apelant).
def divisione_resto(a, b):
return a // b, a % b
quoziente, resto = divisione_resto(17, 5)
# 3, 2Docstring: documentație încorporată
Primul șir din funcție este docstring: apare în
help(fn) și ca indicație în IDE-uri.
def area_cerchio(raggio):
"""Calcola l'area di un cerchio dato il raggio."""
import math
return math.pi * raggio ** 2Domeniul de aplicare: variabile locale
Variabilele definite în interiorul unei funcții sunt locale: nu există afara.
def f():
x = 10
return x
f() # 10
x # NameError: name 'x' is not definedFuncțiile returnează întotdeauna ceva
În Python, dacă o funcție nu declară în mod explicit o instrucțiune return sau prezintă un return necompletat, va returna implicit valoarea specială None. Nu există funcții care să nu returneze o valoare.
Încearcă
Definiți o funcție `double(x)` care returnează `x * 2`. Apoi apelați-l cu 7 și atribuiți rezultatul la „rezultat”. Evaluați „rezultatul”.
Afișează indiciu
Utilizați returnarea x * 2.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Definiți `min_max(nums)` care returnează un tuplu `(minimum, maximum)`. Apelați-l pe `[3, 1, 4, 1, 5, 9, 2, 6]` și despachetați rezultatul în `mn, mx`. Evaluați `(mn, mx)`.
Afișează indiciu
returnează min(nums), max(nums)
Soluție disponibilă după 3 încercări
Provocare suplimentară
Definiți o funcție \`is_palindrome(text)\` care returnează \`True\` dacă șirul de intrare este egal cu versiunea sa inversată și \`False\` în caz contrar. Testați funcția cu \`is_palindrome("radar")\` ca ultima expresie.
Afișează indiciu
Folosiți slicing text[::-1] pentru a inversa șirul și pentru a-l compara cu textul original.
Soluție disponibilă după 3 încercări