Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Funzioni
STRUT TURARE IL CODICE, FUNZIONI,
PARAMETRI, RESTITUZIONE DI VALORI
Capitolo 5
https://docs.python.org/3/library/functions.html#round
https://docs.python.org/3/library/functions.html
Politecnico di Torino, 2021/22 INFORMATICA / COMPUTER SCIENCES 12
Trovare le funzioni nelle librerie (2)
Dentro i moduli nella libreria standard
o https://docs.python.org/3/library/
o https://docs.python.org/3/py-modindex.html
o Più di 200 moduli, con varie funzioni in ciascuno
o Moduli interessanti: string, math, random, statistics, os.path, csv, json, …
Ricordare le istruzioni Vedi Unità P2
o import module
o from module import function
Ricordare:
o import module
o from module import function
def cubeVolume(sideLength):
volume = sideLength ** 3
return volume
Invocare/collaudare la funzione:
result1 = cubeVolume(2)
result2 = cubeVolume(10)
print("Un cubo con lato di lunghezza 2 ha volume ", result1)
print("Un cubo con lato di lunghezza 10 ha volume ", result2)
Funzione chiamata
def cubeVolume(sideLength):
volume = sideLength ** 3
return volume
3) Il risultato della funzione 2) Il corpo della funzione
viene restituito ed usato nel viene eseguito, con il
punto di chiamata valore corrente della
variabile parametro
https://padlet.com/refe/inf
def cubeVolume(sideLength):
volume = sideLength * 3
return volume
def cubeVolume(sideLength):
volume = sideLength ** 3
return volume
Funzione chiamata
Politecnico di Torino, 2021/22 INFORMATICA / COMPUTER SCIENCES 28
Indipendenza tra argomento e parametro
Provalo su
PythonTutor Codice chiamante
result2 = cubeVolume(size)
⚠Argomento (size) e parametro
Argomento: variabile
(sideLength) sono due
sideLength = size
variabili distinte e indipendenti.
Il parametro viene inizializzato
con il valore dell’argomento, e
ne diviene un ‘alias’
def cubeVolume(sideLength):
volume = sideLength ** 3
return volume
Funzione chiamata
Politecnico di Torino, 2021/22 INFORMATICA / COMPUTER SCIENCES 29
Errori comuni
Tentare di modificare gli total = 10
argomenti (parametri attuali) newPrice = addTax(total, 7.5)
total
Viene passata solo una copia
10.0
degli argomenti (viene passato
il valore) def addTax(price, rate):
o La funzione invocata (addTax) tax = price * rate / 100
può modificare solo la copia
# Non ha alcun effetto al
locale (price)
# di fuori della funzione
o La variabile total non è
price = price + tax
modificata nella funzione
return tax price
o total = 10 dopo l’invocazione
della funzione 10.75
parametri nominali
Politecnico di Torino, 2021/22 INFORMATICA / COMPUTER SCIENCES 37
Valori di default
Le variabili parametro possono avere dei valori di default,
che vengono usati se, durante la chiamata, nessun
argomento è assegnato a tale parametro
def cubeVolume(sideLength):
if (sideLength < 0):
return 0
else:
return sideLength * 3
def cubeVolume(sideLength):
if sideLength >= 0:
volume = sideLength ** 3
else:
volume = 0
return volume
https://padlet.com/refe/inf
...
boxString("Hello")
... def boxString(contents):
n = len(contents):
print("-" * (n + 2))
print("!" + contents + "!")
print("-" * (n + 2))
def boxString(contents):
n = len(contents)
if n == 0:
return # Termina immediatamente
print("-" * (n + 2))
print("!" + contents + "!")
print("-" * (n + 2))
def main():
print("Volume:", pyramidVolume(9, 10))
print("Expected: 300")
print("Volume:", pyramidVolume(0, 10)) Volume: 300.0
print("Expected: 0") Expected: 300
Volume: 0.0
Expected: 0
if __name__ == '__main__':
# chiama la funzione main se eseguito in modalità standalone,
# non la chiama se importato come modulo.
main()
def cubeVolume(sideLength):
volume = sideLength ** 3
return volume
def cubeVolume(sideLength):
volume = sideLength ** 3
return volume
main() # 2
In #1, la funzione main è appena stata definita (non ancora eseguita).
Sarà invocata in #2, che è dopo la definizione di cubeVolume.
hours = readIntUpTo(23)
minutes = readIntUpTo(59)
def main():
sum = 0
for i in range(11):
square = i * i sum
i
sum = sum + square
print(square, sum)
square
def main():
sideLength = 10
result = cubeVolume()
print(result)
def cubeVolume():
return sideLength * sideLength * sideLength # ERRORE
def main():
result = square(3) + square(4) result
print(result)
def main():
value = int(input("Please enter a positive integer < 1000: "))
print(intName(value))