Хороший способ обработки объектов NoneType при печати в Python - PullRequest
5 голосов
/ 27 августа 2009

Как мне распечатать объект NoneType в Python?

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

Кроме того, почему иногда я вижу запятую вместо + выше?

Ответы [ 4 ]

8 голосов
/ 27 августа 2009

Лучший подход:

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

В большинстве случаев вам придется использовать оператор % между строкой форматирования слева и значением (ями) справа (в кортеже, если их больше одного). Но функции logging являются особыми: вы передаете строку формата в качестве первого аргумента, а затем один за другим столько аргументов, сколько необходимо для соответствия количеству маркеров форматирования %s & c в формате, и logging функции будут использовать оператор форматирования %s в зависимости от ситуации тогда и только тогда, когда необходимо , поэтому вы не будете подвергаться никаким накладным расходам во время выполнения, если ваш текущий уровень регистрации таков, что, например, logging.info на самом деле не будет показано.

В любом случае забудьте о str вызовах и конкатенации строк на основе + - даже без спец. logging форматирование % - это действительно путь (в Python 2.6 или более ранней версии; в 2.6 или более поздней версии) , вы также должны рассмотреть строковый метод format, позволяющий более четкое и более читаемое выражение того, что равнозначно той же функциональности).

4 голосов
/ 27 августа 2009
logging.info("NEW_SCORE : " + str(score))

Доказательство интерпретатором 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

0 голосов
/ 01 февраля 2013

если не оценка == Нет: logging.info ("NEW_SCORE:" + оценка)

или

logging.info ("NEW_SCORE:% s"% str (оценка))

0 голосов
/ 27 августа 2009

Для печати вам нужно сначала str. Запятая должна печатать с одним пробелом между ними .. Например:

печать "привет, ребята", "как дела сегодня"

этот синтаксис выведет:

Привет, ребята, как вы сегодня

но он будет другим, если ваш синтаксис будет таким:

печать "привет, ребята" + "как дела сегодня"

этот синтаксис выведет:

Привет, ребята, как вы сегодня? 1019 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...