In python tutto è un oggetto e puoi passarlo facilmente.stampa una funzione in Python?
Così posso fare:
>> def b():
....print "b"
>> a = b
>> a()
b
Ma se faccio
a = print
ottengo SyntaxError
. Perchè così ?
In python tutto è un oggetto e puoi passarlo facilmente.stampa una funzione in Python?
Così posso fare:
>> def b():
....print "b"
>> a = b
>> a()
b
Ma se faccio
a = print
ottengo SyntaxError
. Perchè così ?
In Python 2.x, la stampa è una dichiarazione non una funzione. In 2.6+ è possibile abilitarlo per essere una funzione all'interno di un dato modulo usando from __future__ import print_function
. In Python 3.x è una funzione che può essere passata in giro.
print
non è una funzione in pre 3.x python. Non sembra nemmeno uno, non c'è bisogno di chiamata facendo (params)
In python2, print
è una dichiarazione. Se lo fai, from __future__ import print_function
, puoi fare come hai descritto. In python3, ciò che hai provato funziona senza importazioni, poiché la stampa è stata creata come una funzione.
Questo è trattato nel PEP3105
Le altre risposte sono corrette. print
è un'istruzione, non una funzione in python2.x. Quello che hai funzionerà su python3. L'unica cosa che devo aggiungere è che se vuoi qualcosa che funzioni su python2 e python3, puoi passare a sys.stdout.write
. Questo non scrive una nuova riga (a differenza di print
) - si comporta come qualsiasi altro oggetto file.
+1 - Buon punto - ma potrebbe valere la pena di aggiungere nessun EOL implicito è stato scritto ... –
@JonClements - Buon punto. aggiornato. – mgilson
+1 per '__future__'. – mgilson
la dichiarazione futura è esplicita. Non infrangerà alcun codice perché riguarda solo il codice che lo aspetta nello stesso modulo – jfs
@JFSebastian - grazie - lo confondo sempre con "Una dichiarazione futura digitata a un interprete interattivo avrà effetto per il resto del sessione di interprete. " –