我只是想整理下面的代码。
def well_known_generator():
print('started')
received = yield 100
print(received)
received = yield 200
print(received)
received = yield 300
print('end')
g = well_known_generator()
print(next(g), g.send(None), g.send(None), g.send(None))
我刚将yield表达式移动到print函数中,但发生语法错误。我只是想知道为什么yield表达式不能像下面这样的函数参数?如果yield像表达式一样工作,它应该可以作为函数参数。
def well_known_generator():
print('start')
print(yield 100)
print(yield 200)
print(yield 300)
print('end')
g = well_known_generator()
print(next(g), g.send(None), g.send(None), g.send(None))
SyntaxError: invalid syntax (<ipython-input-58-bdb3007bb80f>, line 3)
File "<ipython-input-58-bdb3007bb80f>", line 3
print(yield 100)
^
SyntaxError: invalid syntax
答案 0 :(得分:8)
您需要在yield ...
周围添加另一对括号:
def well_known_generator():
print('start')
print((yield 100))
print((yield 200))
print((yield 300))
print('end')
括号是 yield
expression syntax 的一部分:
yield_atom ::= "(" yield_expression ")"
但当括号是赋值语句或语句表达式中唯一的表达式时,括号是可选的:
当yield表达式是赋值语句右侧的唯一表达式时,可省略括号。
在调用表达式(例如print(...)
)中,不能省略括号。