只是一個基本的問題關於Python和。加入()方法:Python的發電機的對象和。加入
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)),
上面的代碼段產生存儲在一個所謂的「結果」的文件一個不錯的輸出,以字符串格式,逐行顯示兩個文件之間的差異。但是我注意到,如果我使用.join()打印「結果」而不是,編譯器會返回包含內存地址的消息。在嘗試使用.join()將結果寫入文件而不使用之後,編譯器通知我,只有字符串和字符緩衝區可以用於.join()方法,而不是生成器對象。所以基於關閉的所有證據,我引證,請糾正我,如果我錯了:
result = diff.compare(file1.read(),file2.read())
< ----結果是一個生成器對象?result
是一個字符串列表,其中result
本身就是第一個字符串的引用?.join()
需要一個內存地址並指向第一個,然後迭代該結構中字符串的其餘地址?生成器對象是一個返回指針的對象嗎?
我很抱歉,如果我的問題不清楚,但我基本上想問問Python退伍軍人,如果我的推論是正確的。我的問題不在於可觀察的結果,而在於python的內部運作。我感謝你的幫助。
什麼信息? – Marcin
您沒有內存地址; python給你一個對象的表示,而自定義對象的默認是顯示對象的類型和內存地址。那裏還有一個對象。 –