python - 是否可以保证这将是一个生成器?
问题描述
def city_generator():
print("city gen called")
return 1 # <--- over simplified to drive the point of the question
yield "amsterdam"
yield "los angeles"
>>> citygenobj = city_generator()
>>> print(citygenobj)
<generator object city_generator at 0x02CE73B0>
>>> next(citygenobj)
city gen called
Traceback (most recent call last):
File "<pyshell#137>", line 1, in <module>
next(citygenobj)
StopIteration: 1
问题:此函数是否充当生成器是否取决于 python 实现?或者python语言规范是否保证如果你有一个yield
语句,它是一个生成器,不管它是否yield
可达?
解决方案
是的,如果你有一个函数,该函数将成为一个生成器(如果无法到达yield
也没关系)。yield
从文档中:
Yield 表达式和语句仅在定义生成器函数时使用,并且仅在生成器函数的主体中使用。在函数定义中使用 yield 足以使该定义创建生成器函数而不是普通函数。
推荐阅读
- bash - 如何在 Rundeck 中用单/双引号 var 重定向长字符串?
- firebase - Firestore 是否不对启用持久性的读取查询中缓存且未更改的文档收费?
- c - 使用 line...file 指令
- java - 如何使用远程 Docker 容器进行开发
- python - 以一种简洁的方式打印出列表值的组合?
- python - 如何在python中创建一个打赏功能
- c++ - 标准中的规则在哪里指定具有尾随返回类型且返回类型包含占位符类型的函数应该是`auto`
- swift - 在 iOS / Swift 5 中使用蓝牙与 Modbus 通信
- sql-server - 如何使用 OpenJson 将 JSON 列标题转换为小写
- node.js - 在节点上的打字稿错误中找不到本地模块