La print
était autrefois une instruction dans Python 2, mais elle est désormais devenue une fonction nécessitant une parenthèse dans Python 3.
Est-il possible de supprimer ces parenthèses dans Python 3? Peut-être en redéfinissant la fonction d'impression?
Donc, au lieu de
print ("Hello stack over flowers")
Je pourrais taper:
print "Hello stack over flowers"
Bien que vous ayez besoin d'une paire de parenthèses pour imprimer dans Python 3, vous n'avez plus besoin d'un espace après print
, car c'est une fonction. Donc, ce n'est qu'un seul caractère supplémentaire.
Si vous pensez toujours que taper une seule paire de parenthèses "prend inutilement du temps", vous pouvez utiliser p = print
et enregistrer quelques caractères de cette façon. Comme vous pouvez lier de nouvelles références à des fonctions mais pas à des mots-clés, vous ne pouvez utiliser que ce raccourci print
dans Python 3.
Python 2:
>>> p = print
File "<stdin>", line 1
p = print
^
SyntaxError: invalid syntax
Python 3:
>>> p = print
>>> p('hello')
hello
Cela rendra votre code moins lisible, mais vous économiserez ces quelques caractères à chaque fois que vous imprimez quelque chose.
Le script AHK est une excellente idée. Pour ceux que ça intéresse, je devais changer un peu pour que ça marche pour moi:
SetTitleMatchMode,2 ;;; allows for a partial search
#IfWinActive, .py ;;; scope limiter to only python files
:b*:print ::print(){Left} ;;; I forget what b* does
#IfWinActive ;;; remove the scope limitation
Non. Cela sera toujours une erreur de syntaxe dans Python 3. Pensez à utiliser 2to3
pour traduire votre code en Python 3.
Utiliser print
sans parenthèses dans le code Python 3 n'est pas une bonne idée. N’est pas non plus créer des alias, etc. Si c’est un briseur d’accord, utilisez Python 2.
Cependant, print
sans parenthèses peut être utile dans le shell interactif. Il ne s’agit pas vraiment de réduire le nombre de caractères, mais d’éviter d’appuyer deux fois sur la touche Maj chaque fois que vous souhaitez imprimer quelque chose pendant le débogage. IPython vous permet d’appeler des fonctions sans utiliser de parenthèses si vous démarrez la ligne avec une barre oblique:
Python 3.6.6 (default, Jun 28 2018, 05:43:53)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: var = 'Hello world'
In [2]: /print var
Hello world
Et si vous activez autocall
, vous n'aurez même pas besoin de taper la barre oblique:
In [3]: %autocall
Automatic calling is: Smart
In [4]: print var
------> print(var)
Hello world
Utilisez Autohotkey pour créer une macro. AHK est gratuit et simple à installer. www.autohotkey.com
Vous pouvez affecter la macro à, par exemple, alt-p:
!p::send print(){Left}
Cela fera que alt-p affichera print () et déplacera votre curseur à l’intérieur des parenthèses.
Ou, mieux encore, pour directement résoudre votre problème, vous définissez un remplacement automatique et limitez sa portée au moment où le fichier ouvert porte l'extension .py:
#IfWinActive .py ;;; scope limiter
:b*:print ::print(){Left} ;;; I forget what b* does. The rest should be clear
#IfWinActive ;;; remove the scope limitation
C'est une solution garantie, transparente et sans douleur.
Vous ne pouvez pas le faire, car le seul moyen de le faire sans parenthèses est de le définir comme mot clé, comme dans Python 2. Vous ne pouvez pas définir manuellement un mot clé, alors non.
Dans Python 3, l’impression est une fonction, alors qu’il s’agissait d’une déclaration dans les versions précédentes. Comme @holdenweb l'a suggéré, utilisez 2to pour traduire votre code.