Ответ 1
Из встроенной документации по функциям на open()
:
open(file, mode='r', buffering=-1...
file является либо строковым, либо байтовым объектом, указывающим путь (абсолютный или относительный к текущему рабочему каталогу) файла, который будет открыт, или дескриптор целочисленного файла файла, который будет обернут
Этот "дескриптор целочисленного файла" далее описан в документации os
:
Например, стандартным входом обычно является файловый дескриптор 0, стандартный вывод - 1, а стандартная ошибка - 2. Другие файлы, открытые процессом, будут затем назначены 3, 4, 5 и т.д.
Так как булевы являются подклассом int
, False
может быть взаимозаменяемым с 0
и True
с 1
. Поэтому открытие дескриптора файла True
совпадает с открытием дескриптора файла 1
, который выберет стандартный вывод.