此代码在结果中给出“否”:
def question(truth=False):
if not truth:
return("no")
else:
return("yes")
print(question())
此代码在结果中给出“<generator object question at 0x000001a1e548cc80>”:
def question(truth=False):
if not truth:
return("no")
else:
yield("yes")
print(question())
为什么第二个会给出不同的结果?不符合屈服条件。
2条答案
按热度按时间fiei3ece1#
因为使用
yield
语句始终创建生成器。该函数仅在遍历生成器时执行,而不是在最初调用该函数时执行。zour9fqk2#
好问题。在函数/方法中的任意位置使用“yield”关键字将立即使该函数/方法成为生成器,因此无法返回。不管yield关键字是否可以访问,它的存在就足够了。