Boa maneira de lidar com objetos NoneType ao imprimir em Python

votos
5

Como faço para ir sobre printin um objeto NoneType em Python?

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

Também por isso é que em algum momento eu vejo uma vírgula em vez do + acima?

Publicado 27/08/2009 em 04:22
fonte usuário
Em outras línguas...                            


4 respostas

votos
8

A melhor abordagem é:

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

Na maioria dos contextos, você teria que usar um %operador entre a cadeia de formato à esquerda e o valor (s) à direita (em uma tupla, se houver mais de um). Mas as loggingfunções são especiais: você passar a cadeia de formato como o primeiro argumento, então, um após o outro, assim como muitos argumentos conforme necessário para corresponder ao número de %se marcadores de formatação c no formato e as loggingfunções irá usar o operador de formatação %scomo apropriada se e somente se necessário - para que você não incorrer em qualquer sobrecarga de tempo de execução se o seu nível de log atual é tal que, por exemplo, logging.infonão é realmente vai ser mostrado.

Esqueça strchamadas e +concatenação baseada qualquer maneira - mesmo sem logging'especiais s, %Formatação é realmente o caminho a percorrer (em Python 2.6 ou anterior, em 2.6 ou posterior, você também deve considerar cordas' formatmétodo, permitindo a expressão mais clara e legível o que equivale à mesma funcionalidade).

Respondeu 27/08/2009 em 04:39
fonte usuário

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

Prova por interpretador 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

Respondeu 27/08/2009 em 04:24
fonte usuário

votos
0

se não marcar == None: logging.info ( "NEW_SCORE:" + pontuação)

ou

logging.info ( "NEW_SCORE:% s" % str (pontuação))

Respondeu 01/02/2013 em 13:58
fonte usuário

votos
0

Para fins de impressão, você precisa str primeiro. Uma vírgula é imprimir com um único espaço entre it..For exemplo:

imprimir "Oi", "como você está hoje"

esta saída sintaxe vontade:

oi pessoal como você está hoje

mas será diferente se sua sintaxe como esta:

imprimir "Oi" + "Como você está hoje"

esta saída sintaxe vontade:

oi guyshow você está hoje

Respondeu 27/08/2009 em 04:49
fonte usuário

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