gpt4 book ai didi

python - "return"和 "return None"生成器中的行为差异

转载 作者:行者123 更新时间:2023-12-01 00:04:41 39 4
gpt4 key购买 nike

仅使用 return 关键字的简单方法会返回 None

def abc():
return
print(abc())

输出:无

同样,

def abc():
return None
print(abc())

输出:无

但是如果我们在生成器中使用它

def abc():
yield 1
return None
print(abc())

它给出

SyntaxError: 'return' with argument inside generator

哪里为

def abc():
yield 1
return
print(abc())

给出

<generator object abc at 0x7f97d7052b40>

为什么我们的行为会有这种差异?

最佳答案

裸露return对于尽早脱离生成器很有用。

同时return None只是 return <a value> 的一个特例,以及之前 yield from (PEP 380) 没有从生成器返回值的支持或用例。因此,为了让设计空间保持开放,它被禁止了:通过禁止在生成器中返回值,Python 的设计者使得以后可以使用新的语义来允许它,因为这不会破坏现有的代码。

如果他们允许返回值而不对其进行任何操作,则会出现风险用户态代码 would break 。这就是为什么从前向兼容性的角度来看,通常最好限制尽可能多的 API,您保留开放用户的所有内容都将利用,并且更改会变得有风险。

关于python - "return"和 "return None"生成器中的行为差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60058124/

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