Это связанно с тем, что print
оператор или функция выполняет два вызовов на write
, один для печати сообщения ('True'
) и один для заканчивающегося новой строки или пространства.
Вы можете увидеть это с помощью сценария, как следующее:
import sys
from datetime import datetime
args = []
class CFout:
def write(self, x):
args.append(x)
sys.__stdout__.write("%s %s " % (datetime.now().strftime("%d/%m/%Y %H:%M:%S:%f"), x))
sys.stdout = CFout()
print True
print False
print 1, 2, 3
sys.stdout = sys.__stdout__
print 'arguments were'
print args
Названные результаты в:
$python2 prnt.py
15/05/2015 08:07:03:171182 True 15/05/2015 08:07:03:171392
15/05/2015 08:07:03:171452 False 15/05/2015 08:07:03:171477
15/05/2015 08:07:03:171517 1 15/05/2015 08:07:03:171540 15/05/2015 08:07:03:171561 2 15/05/2015 08:07:03:171581 15/05/2015 08:07:03:171601 3 15/05/2015 08:07:03:171621
arguments were
['True', '\n', 'False', '\n', '1', ' ', '2', ' ', '3', '\n']
Примечание:
'True'
и '\n'
аргументы для двух звонки, выполняемые при выполнении print True
.
'False'
и '\n'
аргументы для двух вызовов, выполняемых при выполнении print False
'1'
, ' '
, '2'
, ' '
, '3'
и '\n'
аргументы, выполняемые при выполнении print 1,2,3
.
Другой способ увидеть это с помощью исключения:
>>> print 1, 1/0, 2
1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
Примечания: 1
еще печататься, даже несмотря на то, 1/0
вызывает исключение. Что делает python, он берет каждую отдельную часть материала для печати, оценивая его, а затем вызывает write
. Затем он вызывает write(' ')
, чтобы распечатать пробел из-за запятой и, наконец, оценивает 1/0
, что приводит к исключению.
Таким же образом print True
сначала вычисляет True
, затем вызывает write(str(True))
и, наконец, вызывает write('\n')
добавить окончательный символ новой строки.
Если вы хотите использовать проприетарную метку для сообщений, вы должны использовать модуль logging
.
Вы должны использовать '' logging'' для выполнения этой задачи: https://docs.python.org/2/library/logging.html – klashxx