为什么python-chess中的相同函数返回不同的结果?

时间:2019-05-04 16:12:07

标签: python-3.x function python-chess

我刚接触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文件中的(大概)第三局。这怎么可能?如果我使用的是相同的函数,那么对于同一文件,它是否每次都不返回相同的结果?除非编程语言在一夜之间发生变化或者某个地方内置了随机函数,否则变量名为什么很重要(我假设是这样)?

1 个答案:

答案 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)),也没有关闭并重新打开文件,因此它将读取下一个可用数据–即下一场比赛。