Я пытался распечатать таблицу истинности для булевых выражений. Выполняя это, я наткнулся на следующее:
>>> 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, если задан только оператор выравнивания (например, ^)?