如果你问的话,我有一些来自备受诟病的 Python 资源的代码,但我正试图从中推断出 Python 的解析例程,不管它的教学优点如何。
def princess_lives_here():
#<some messages and conditionals to keep you going in the text-based game>
#<one of the conditionals end in a `return 'death'`, another function in ROOMS>
ROOMS = {
'death': death,
'princess_lives_here': princess_lives_here,
}
def runner (map, start):
next = start
while True:
room = map[next]
print "\n--------"
next = room()
runner(ROOMS, 'princess_lives_here')
我不确定
princess_lives_here
是如何在 while 循环中运行的。我只能假设它在最后一行运行,但对我来说看起来像是分配的必须是room()
的执行,即princess_lives_here
。为什么、何时以及如何执行此执行?我的第二个问题是,当解析例程遇到
return 'death'
时,while 循环如何、何时以及为何再次运行。
我已经用整个代码创建了一个要点,以防您想要更全面的图片。它只是占用了很多代码行:https://gist.github.com/848228 .
最佳答案
看完原码给大家分析一下:
1)程序进入点:
runner(ROOMS, 'princess_lives_here')
2) runner 函数获取 map (我们可以去的可用房间的列表)和 map 上的起点。因此,之前的调用使用 ROOMS 字典中定义的 map 并将我们设置在 princess_live_here 房间。
3) runner 循环,获取实际的房间字典值,因此,我们获取一个名为 princess_live_here 的函数的引用,该函数定义在文件顶部,打印一些输出并使用该引用调用该函数。
4) 在 princess_lives_here 我们可以输入一些文本,该文本将决定下一步做什么,返回我们要去的下一个房间。例如,如果我们写:“让她吃掉”,该函数将返回“gold_koi_pond”房间的键,然后循环会将那个房间设置为我们的实际房间,并再次获取该房间的字典值房间并调用它。
所以,以更集中的方式回答你:
a) 执行是我在上面这行描述的 b) 当任何函数返回 'death' 时,执行与上面相同,但 death 函数将打印一个随机引用并退出程序。
仅此而已。
关于关于使用字典、while 循环和赋值解析例程的 Python 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148615/