Apprendimento delle funzioni e dei parametri di Python

1
def printMax(a, b):
   if a > b:
   print(a, 'is maximum')
   elif a == b:
   print(a, 'is equal to', b)
   else:
   print(b, 'is maximum')

printMax(3, 4) # directly give literal values
x = 5
y = 7
printMax(x, y) # give variables as arguments

Sto imparando Python tramite il byte del libro Python, e l'autore usa questo esempio per introdurci alle funzioni. Quando l'autore chiama la funzione printMax, non usa la citazione per i numeri 3,4, cioè non usa printMax ("3", "4") che pensavo andasse bene.

Tuttavia, in seguito, definisce una funzione come questa

def say(message, times = 1)
   print(message * times)

say("hello", 3)

perché usa le citazioni per il messaggio (cioè perché usa say ("ciao", 3) invece di dire (ciao, 3)? In che modo Python nota la differenza?

    
posta user120543 19.02.2014 - 20:31
fonte

2 risposte

2

Nel tuo esempio, si suppone che printMax abbia ricevuto numeri interi. In python e in molti altri linguaggi, i numeri interi non sono espressi usando la citazione.

Considera questo:

printMax(3, 4); ## ouput 4 is max
printMax(35, 4); ## output 35 is max
printMax("35", "4"); ## output 4 is max

La mia ultima chiamata a printMax usa la citazione e quindi l'argomento è ora stringhe. Se fai comparaison di stringhe, "4" > "35" è vero.

Utilizza say("hello", 3) perché hello è una stringa qui, quindi ha bisogno di quotazione. Se avesse usato say(hello, 3) python si sarebbe lamentato della variabile non definita.

    
risposta data 19.02.2014 - 20:42
fonte
0

Python presenta un parser per capire questo. Le virgolette indicano a Python che questo oggetto è una stringa , che è un tipo di oggetto diverso da un numero. Se non usi le virgolette, Python penserà che sia una variabile.

(Sotto il cofano, tutte le funzioni sono oggetti codice che vengono assegnati alle variabili.)

    
risposta data 19.02.2014 - 20:44
fonte

Leggi altre domande sui tag