为什么open(True,'w')打印像sys.stdout.write这样的文本?

Kev*_*uan 11 python python-3.x

我有以下代码:

with open(True, 'w') as f:
    f.write('Hello')
Run Code Online (Sandbox Code Playgroud)

为什么此代码打印文本Hello而不是引发错误?

Tig*_*kT3 10

内置函数文档open():

open(file, mode='r', buffering=-1... file是字符串或字节对象,给出要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符

os模块文档中进一步描述了"整数文件描述符" :

例如,标准输入通常是文件描述符0,标准输出是1,标准错误是2.然后,进程打开的其他文件将分配3,4,5等.

由于布尔是一个int亚类中,False可以互换使用0,并True1.因此,打开文件描述符与打开文件描述符True相同1,后者将选择标准输出.