72 votes

Quel est l'avantage de la nouvelle fonction d'impression de Python 3.x par rapport à l'instruction d'impression Python 2 ?

J'ai entendu plusieurs fois que print étant une fonction (3.x) est mieux qu'une instruction (2.x). Mais pourquoi?

J'étais fan qu'il s'agisse d'une déclaration principalement parce qu'elle me permettait de taper deux caractères de moins (c'est-à-dire les parenthèses).

Je serais intéressé de voir certaines situations où l'instruction print ne le coupe tout simplement pas et où une fonction est supérieure.

44voto

Lennart Regebro Points 52510

Tout de la réponse de Jochen et de la réponse de Sven , plus :

Vous pouvez l'utiliser print() dans des endroits où vous ne pouvez pas utiliser print , tels que :

 [print(x) for x in range(10)]

37voto

Sven Marnach Points 133943

Un avantage de print étant une fonction est la cohérence. Il n'y a aucune raison pour que ce soit une déclaration. Comparez ces deux lignes

 2.x: print >> my_file, x
3.x: print(x, file=my_file)

La nouvelle version ressemble beaucoup plus à Python, n'est-ce pas ?

Un autre avantage de la version fonctionnelle est la flexibilité. Par exemple, si vous souhaitez intercepter tous les print à des fins de débogage, vous pouvez maintenant simplement redéfinir print :

 def print(*args, **kwargs):
    # whatever
    __builtins__.print(*args, **kwargs)

12voto

Artur Gaspar Points 1664

Vous pouvez remplacer le print intégré par un personnalisé :

 import os
import sys

def print(s):
   sys.stderr.write('Will now print ' + str(s) + '.' + os.linesep)
   sys.stdout.write(str(s) + os.linesep)

print(['A', 'list'])
# Output: 
# stderr: Will now print ['A', 'list'].
# stdout: ['A', 'list']

Vous pouvez utiliser print dans un lambda ou un appel de fonction, etc. :

 example_timeout_function(call=lambda: print('Hello world'), timeout=5)
do_things(print_function=print)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X