Bonne façon de traiter les objets NoneType lors de l'impression en Python

voix
5

Comment puis-je faire pour printin un objet NoneType en Python?

# score can be a NonType object
logging.info(NEW_SCORE : +score)

Aussi pourquoi est-ce que je vois quelque temps une virgule au lieu de + ci-dessus?

Créé 27/08/2009 à 04:22
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
8

La meilleure approche est:

logging.info("NEW_SCORE: %s", score)

Dans la plupart des contextes, il faudrait utiliser un %opérateur entre la chaîne de format sur la gauche et la valeur (s) à droite (dans un tuple, si plus d'un). Mais les loggingfonctions sont spéciales: vous passez la chaîne de format comme premier argument, puis, l' un après l'autre, tout autant d'arguments que nécessaire pour correspondre au nombre de %s& c mise en forme des marqueurs dans le format et les loggingfonctions utiliseront l'opérateur de formatage %scomme appropriée si et seulement si nécessaire - afin que vous ne subissez pas de frais généraux d'exécution si votre niveau de journalisation actuelle est telle que, par exemple, logging.infon'est pas réellement va être montré.

Oubliez les strappels et +concaténation de chaînes à base de toute façon - même sans logging« specials de, %-Format est vraiment le chemin à parcourir (en Python 2.6 ou une version antérieure, en 2.6 ou ultérieur, vous devriez également considérer les chaînes » formatméthode, permettant l' expression plus claire et plus lisible de ce qui revient au même fonctionnalité).

Créé 27/08/2009 à 04:39
source utilisateur

voix
4
logging.info("NEW_SCORE : " + str(score))

La preuve par l'interpréteur Python:

>>> x = None
>>> "x: " + x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'NoneType' objects
>>> "x: " + str(x)
'x: None'

QED

Créé 27/08/2009 à 04:24
source utilisateur

voix
0

sinon == Aucun score de: logging.info ( "NEW_SCORE:" + score)

ou

logging.info ( "NEW_SCORE:% s" % str (score))

Créé 01/02/2013 à 13:58
source utilisateur

voix
0

Pour les besoins d'impression, vous devez d'abord str. Une virgule est d'imprimer avec un seul espace entre it..For exemple:

imprimer « Salut les gars », « comment allez-vous aujourd'hui »

cette syntaxe Affichera:

Salut les gars comment allez-vous aujourd'hui

mais il sera différent si votre syntaxe comme ceci:

imprimer « Salut les gars » + « comment allez-vous aujourd'hui »

cette syntaxe Affichera:

salut guyshow êtes-vous aujourd'hui

Créé 27/08/2009 à 04:49
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more