我刚接触python-chess,正在阅读官方文档。我注意到这非常奇怪的事情,我根本无法理解。这来自文档:
import chess.pgn
pgn = open("data/pgn/kasparov-deep-blue-1997.pgn")
first_game = chess.pgn.read_game(pgn)
second_game = chess.pgn.read_game(pgn)
因此,您可以看到完全相同的功能pgn.read_game()
导致出现两个不同的游戏。我尝试使用自己的pgn
文件,并且确定有足够的first_game == second_game
产生了False
。我还尝试了third_game = chess.pgn.read_game()
,并且肯定可以给我pgn
文件中的(大概)第三局。这怎么可能?如果我使用的是相同的函数,那么对于同一文件,它是否每次都不返回相同的结果?除非编程语言在一夜之间发生变化或者某个地方内置了随机函数,否则变量名为什么很重要(我假设是这样)?
答案 0 :(得分:0)
唯一可行的方法是更改某些数据。这可能是chess.pgn.read_game
从其他地方读取的数据,也可能与您传递的对象有关。
在Python中,类似文件的对象存储它们在文件中的位置。如果没有,则此代码:
with open("/home/wizzwizz4/Documents/TOPSECRET/diary.txt") as f:
line = f.readline()
while line:
print(line, end="")
line = f.readline()
只需一遍又一遍地打印第一行。当从文件中读取数据时,Python不会再次为您提供该数据,除非您专门要求它。
此文件中有多个游戏,一个接一个地存储。您每次都传递相同的文件,但没有将读取光标重置为文件的开头(f.seek(0)
),也没有关闭并重新打开文件,因此它将读取下一个可用数据–即下一场比赛。