gpt4 book ai didi

python - 为什么 yield 表达式不能作为函数参数?

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

我只是想整理一下下面的代码。

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

最佳答案

您需要在 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 ")"

但是当括号是赋值语句或语句表达式中的唯一表达式时,括号是可选的:

The parentheses may be omitted when the yield expression is the sole expression on the right hand side of an assignment statement.

在调用表达式中(例如print(...)),括号不能省略。

关于python - 为什么 yield 表达式不能作为函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45255024/

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