Python 为什么可以';屈服表达式不是函数参数吗?

Python 为什么可以';屈服表达式不是函数参数吗?,python,generator,yield,Python,Generator,Yield,我只是想整理一下下面的代码 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)

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

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像表达式一样工作,那么它作为函数参数应该是可以的

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
def众所周知的生成器():
打印('开始')
印刷品(产量100)
印刷品(产量200)
印刷品(产量300)
打印('结束')
g=众所周知的发电机()
打印(下一个(g)、g.send(无)、g.send(无)、g.send(无))
SyntaxError:无效语法(,第3行)
文件“”,第3行
印刷品(产量100)
^
SyntaxError:无效语法

您需要在
yield…
周围添加另一对括号:

def well_known_generator():
    print('start')
    print((yield 100))
    print((yield 200))
    print((yield 300))
    print('end')
括号是以下内容的一部分:

但是,如果圆括号是赋值语句或语句表达式中的唯一表达式,则圆括号是可选的:

当屈服表达式是赋值语句右侧的唯一表达式时,可以省略括号

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

yield_atom       ::=  "(" yield_expression ")"