正在加载...

逐个产出值

你有三个站名,想一个一个地拿到。屏幕上的第一行是 north。下一行是 east。最后一行是 south。

一个一个要来的三个名字

python
def stations():
    yield "north"
    yield "east"
    yield "south"

route = stations()
print(next(route))
print(next(route))
print(next(route))

屏幕上显示三行。第一个 print 只写 north,别的都不写。yield "north" 这一行把这个名字交给这个 print。east 只有在第二个 print 来要的时候才会写出。第二个 print 写 east。第三个 print 写 south。一个 print 不会把三个名字放在同一行。程序到这里结束。没有第四行。这个屏幕上不会写出 None。

📊 每个 print 在屏幕上写什么

哪一个 print 屏幕上的那一行
第一个 print(next(route)) north
第二个 print(next(route)) east
第三个 print(next(route)) south

south 之后,stations 里没有 yield 了。第四个 print(next(route)) 不在这个程序里。如果你加上这一行,它会停住,报出 StopIteration,因为没有下一个名字了。None 不会写出。你现在的屏幕仍然是先 north,再 east,最后 south。

现在你可以先要一个站名,再要下一个,最后要最后一个。屏幕上是先 north,再 east,最后 south。下一页给一个函数加一层包装。

先一个名字,再下一个

第一个 print 写 north,第二个写 east,第三个写 south:屏幕上有三行。下一页给一个函数加一层包装。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
4
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部