【发布时间】:2013-01-05 00:08:41
【问题描述】:
关于 python 和 .join() 方法的一个基本问题:
file1 = open(f1,"r")
file2 = open(f2,"r")
file3 = open("results","w")
diff = difflib.Differ()
result = diff.compare(file1.read(),file2.read())
file3.write("".join(result)),
上面的 sn-p 代码产生了一个很好的输出,以字符串格式存储在一个名为“results”的文件中,逐行显示两个文件之间的差异。但是我注意到,如果我只使用 .join() 打印“结果”,编译器会返回一条包含内存地址的消息。在尝试使用 .join() 将结果写入文件 without 后,编译器通知我在 .join() 中只能使用字符串和字符缓冲区) 方法,而不是生成器对象。因此,根据我引用的所有证据,如果我错了,请纠正我:
result = diff.compare(file1.read(),file2.read())result是一个字符串列表,result本身就是对第一个字符串的引用?.join()获取内存地址并指向第一个,然后遍历该结构中字符串的其余地址?生成器对象是返回指针的对象吗?
如果我的问题不清楚,我很抱歉,但我主要是想问问蟒蛇老兵我的推论是否正确。我的问题不是关于可观察的结果,而是关于 python 的内部工作原理。感谢您的所有帮助。
【问题讨论】:
-
你没有内存地址; python给你一个对象的表示,自定义对象的默认是显示对象的类型和内存地址。那里还有一个物体。
标签: python string list pointers generator