我有以下代码:
with open(True, 'w') as f:
f.write('Hello')
为什么此代码会打印文本Hello
而不是引发错误?
答案 0 :(得分:10)
来自built-in function documentation on open()
:
open(file, mode='r', buffering=-1...
file 是一个字符串或字节对象,给出要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符
"整数文件描述符"在os
module documentation:
例如,标准输入通常是文件描述符0,标准输出是1,标准错误是2.进程打开的其他文件将被分配3,4,5等等。
由于布尔值是int
子类,False
可与0
和True
1
互换使用。因此,打开True
的文件描述符与打开1
的文件描述符相同,后者将选择标准输出。