为什么 python-chess 中的相同函数返回不同的结果?
Why is the same function in python-chess returning different results?
我刚开始使用 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
文件中的(大概)第三个游戏。这怎么可能?如果我使用相同的函数,难道不应该 return 对同一个文件每次都得到相同的结果吗?为什么变量名很重要(我假设它很重要)除非编程语言在一夜之间改变了或者某处内置了一个随机函数?
唯一可能的方法是某些数据正在更改。这可能是 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)
) 或关闭并重新打开文件,因此它将读取下一个可用数据 –即,下一场比赛。
我刚开始使用 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
文件中的(大概)第三个游戏。这怎么可能?如果我使用相同的函数,难道不应该 return 对同一个文件每次都得到相同的结果吗?为什么变量名很重要(我假设它很重要)除非编程语言在一夜之间改变了或者某处内置了一个随机函数?
唯一可能的方法是某些数据正在更改。这可能是 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)
) 或关闭并重新打开文件,因此它将读取下一个可用数据 –即,下一场比赛。