逐个产出值
你有三个站名,想一个一个地拿到。屏幕上的第一行是 north。下一行是 east。最后一行是 south。
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:屏幕上有三行。下一页给一个函数加一层包装。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部