简单Python文件/对象实例
假设我有以下代码简单Python文件/对象实例,python,oop,file-io,Python,Oop,File Io,假设我有以下代码 file1 = open("myfile","w") #Write to file1... #Open Second File file2 = open("otherfile","w") #Write to file2... file1.close() file1 = file2 file2.close() 这是否会有效地导致关闭所有文件,或者file1仍然有一个打开的文件(其他文件)可以写入到still?否,在最后一行中,file1和file2都引用了相同的文件
file1 = open("myfile","w")
#Write to file1...
#Open Second File
file2 = open("otherfile","w")
#Write to file2...
file1.close()
file1 = file2
file2.close()
这是否会有效地导致关闭所有文件,或者file1仍然有一个打开的文件(其他文件)可以写入到still?否,在最后一行中,
file1
和file2
都引用了相同的文件对象,该对象由file2.close()关闭。Python变量只是指向对象的名称,因此对一个名称所做的操作会发生在指向该对象的所有名称上。否,在最后一行中,file1
和file2
都引用相同的文件对象,该对象由file2.close()关闭。Python变量只是指向对象的名称,因此对一个名称所做的操作会发生在指向该对象的所有名称上。是。(为了澄清,两个文件对象都将关闭,并且无法写入)
变量名只是对底层对象的引用。在对象上调用close()
方法时,它将访问该对象并执行该方法。如果随后检查这两个对象,可以看出:
>>> file1
<closed file 'file2.txt', mode 'w' at 0x10045e930>
>>> file2
<closed file 'file2.txt', mode 'w' at 0x10045e930>
>>>
>>文件1
>>>文件2
>>>
请注意,在这种情况下,您可以设置file1=file2
,使它们都引用同一个关闭的文件对象。如果不再引用原始file1
对象,则该对象将被垃圾收集。是。(为了澄清,两个文件对象都将关闭,并且无法写入)
变量名只是对底层对象的引用。在对象上调用close()
方法时,它将访问该对象并执行该方法。如果随后检查这两个对象,可以看出:
>>> file1
<closed file 'file2.txt', mode 'w' at 0x10045e930>
>>> file2
<closed file 'file2.txt', mode 'w' at 0x10045e930>
>>>
>>文件1
>>>文件2
>>>
请注意,在这种情况下,您可以设置file1=file2
,使它们都引用同一个关闭的文件对象。如果没有对原始文件1
对象的更多引用,则该对象将被垃圾收集。由于您在重新分配文件1之前关闭了文件1,因此两个文件都将关闭由于您在重新分配文件1之前关闭了文件1,因此两个文件都将关闭