En Python 2.x, en utilisant les backticks pour obtenir chaîne décimale de l'objet int est horrible?
-
27-09-2019 - |
Question
En Python 2.x, en utilisant les backticks pour obtenir chaîne décimale de l'objet int est Horrible ?
Parce que sont repr()
contre-apostrophes, pas str()
? J'ai remarqué que quand je répondre à cette question .
Dans la source Python, ils ont la même fonction dans la source Python, intobject .c
(reprfunc)int_to_decimal_string, /* tp_repr */
....
(reprfunc)int_to_decimal_string, /* tp_str */
Que pensez-vous?
La solution
Eh bien, je ne dirais pas que c'est « horrible », mais je pense qu'il est pas bon pour au moins quatre raisons:
-
str(my_number)
indique plus clairement votre intention que ses environsmy_number
par des accents graves. (Voir "compte" dans Lisibilité le Zen de Python ). -
La mise en œuvre de Python en C est juste une mise en œuvre possible; il y a Jython, IronPython, PyPy et ainsi de suite, et à moins d'une déclaration explicite quelque part dans le spécification Python qui
repr()
etstr()
est le même pour des objets entiers, je ne serais pas compter sur ce comportement. -
Les contre-apostrophes sont partis en Python 3.x.
-
Si votre numéro se trouve être si grand qu'il ne peut pas être représenté par un
int
, Python favorise automatiquement un entier long, et pour cela, diffère derepr()
etstr()
.
Voir cet exemple:
>>> x = 1234567890
>>> y = x ** 3
>>> `y`
'1881676371789154860897069000L'
>>> str(y)
'1881676371789154860897069000'
Autres conseils
Oui. L'utilisation des backticks pour tout est horrible.
Vous avez str(i)
, vous avez '%d' % i
, vous avez .format(i)
; si vous voulez que le repr
puis le dire directement avec repr()
ou %r
ou autre.
Il n'y a jamais une bonne raison d'utiliser des accents graves, ils ont juste fait un code moins lisible et beaucoup plus difficile à analyser. Ils sont partis en Python 3.
2.X: Utilisation des backticks pour quoi que ce soit est horrible. Utilisez rééd () ou str () selon les besoins.
3.X: Les contre-apostrophes ont disparu! Bravo !!