gpt4 book ai didi

python - 请帮助理解本例中如何使用 'return' 语句

转载 作者:行者123 更新时间:2023-11-28 21:26:15 25 4
gpt4 key购买 nike

我目前正在使用 Learn Python the Hard Way 学习 Python,并且非常喜欢它。在其中一个类(class)示例中,我没有掌握“return”的用法。

我坚持的类(class)是 Exercise 43: Gothons From Planet Percal #25 .我知道当游戏第一次运行时 next_room_name 被设置为 central_corridor 所以 central_corridor() 下的第一个循环中被调用播放()。我不明白的是 self.start 是如何重新分配的。

例如,在 central_corridor() 下返回的 death 实例。在第 49 行返回之后,我们回到了 play(self): while True 循环。第一行是 next_room_name = self.start 据我所知,self.start 仍然等于 central_corridor,但现在显然等于 死亡

这是否意味着在返回death之后,仍在play()下的while循环中,对象Game () 已经重新初始化,__init__ 被提供返回的结果?我很困惑 __init__ 下的 next_room_name = self.start 是如何被重新分配给 death 的,而我们在技术上仍处于 play(self): while True 循环并且还没有退出。我想我对 death 返回到哪里感到困惑。

最佳答案

所以让我们逐步了解它直到 while 循环:

a_game = Game("central_corridor")
a_game.play()

这里我们实例化a_gamestart_value = central_corridor。到目前为止,一切顺利 :) 现在我们运行 a_game.play():

def play(self):
next_room_name = self.start

while True:
print "\n--------"
room = getattr(self, next_room_name)
next_room_name = room()

正如您正确指出的那样,next_room_name 被分配了值 central_corridor,然后 while 循环开始。

这可能是要获取的重要部分 - while 循环仅执行 while 部分以及其下方缩进的所有内容 - next_room_name 是 < strong>不每次都重新分配给self.start。相反,我们将 room 定义为属性 next_room_name(即 central_corridor),然后运行同名方法。然后在下一个循环中使用该方法的返回值(假设是 death),这意味着 room = deathnext_room_name= 结果death(),它打印一个随机的讽刺然后退出。如果名称是另一个房间,它将继续循环。

关于python - 请帮助理解本例中如何使用 'return' 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13262173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com