Я пытался распечатать таблицу истинности для булевых выражений. Выполняя это, я наткнулся на следующее:
>>> format(True, "") # shows True in a string representation, same as str(True)
'True'
>>> format(True, "^") # centers True in the middle of the output string
'1'
Как только я укажу спецификатор формата, format()
преобразует True
в 1
. Я знаю, что bool
является подклассом int
, поэтому True
оценивается как 1
:
>>> format(True, "d") # shows True in a decimal format
'1'
Но почему в первом примере с помощью спецификатора формата изменяется 'True'
на 1
?
Я обратился к документам для уточнения. Единственное, что он говорит:
Общим соглашением является то, что пустая строка формата (
""
) дает тот же результат, что и вы набралиstr()
для значения. Непустая строка формата обычно изменяет результат.
Таким образом, строка изменяется, когда вы используете спецификатор формата. Но почему изменение от True
до 1
, если задан только оператор выравнивания (например, ^
)?