Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python文件处理中,closed方法在被with语句关闭后如何识别文件对象?_Python_Python 3.x - Fatal编程技术网

在Python文件处理中,closed方法在被with语句关闭后如何识别文件对象?

在Python文件处理中,closed方法在被with语句关闭后如何识别文件对象?,python,python-3.x,Python,Python 3.x,我搞不懂文件对象上的closed方法是如何在文件关闭后成功执行的,正如其中一个教程所述 >>将open('workfile')作为f: ... read_data=f.read() >>>f.关闭 真的 我预计f.closed命令会失败,因为with语句应该关闭文件,f应该不再可用。关闭后,程序如何仍然能够识别f文件对象 另外,名称f不应该只存在于with块中吗?程序如何识别块以外的对象 关闭后,程序如何仍然能够识别f文件对象 它只是工作,但这真的是一个很大的问题吗?有些人可能会说,变

我搞不懂文件对象上的
closed
方法是如何在文件关闭后成功执行的,正如其中一个教程所述

>>将open('workfile')作为f:
...     read_data=f.read()
>>>f.关闭
真的
我预计
f.closed
命令会失败,因为
with
语句应该关闭文件,
f
应该不再可用。关闭后,程序如何仍然能够识别
f
文件对象

另外,名称
f
不应该只存在于
with
块中吗?程序如何识别
块以外的对象

关闭后,程序如何仍然能够识别
f
文件对象

它只是工作,但这真的是一个很大的问题吗?有些人可能会说,变量并不意味着可以重用。对于那些人来说,这将是一个无用的功能。对于其他人来说,这将是好的,或者只是好的

[…]名称
f
不应该只存在于
with
块中吗?[……]

可能吧

[…]程序如何识别
块以外的对象


事实上,源代码中的对象存在于嵌套块之前(和之外)(就在嵌套块之前和之外)。因此,语言设计者的选择,甚至可以说,是有道理的。

实际上,这是
的关系,他们不创建新的命名范围Python不做块范围。请参见关闭通过变量
f
引用的文件对象不会(基本上不能)更改
f
的值;它仍然是指完全相同的对象。该对象现在只是处于大多数操作都会返回“文件已关闭”错误的状态。访问属性
closed
(注意:这不是一个方法)的前后工作原理完全相同。
与python中的许多其他内容一样,遵循一个协议。它用于管理上下文。请阅读上下文管理器和实验。那么事情就清楚多了你说的“上层”是什么意思?