Python函数究竟如何返回/屈服对象?

return语句使python函数退出并向其调用者返回一个值。通常,函数的目的是接受输入并返回某些东西。return语句一旦执行,将立即终止函数的执行,即使它不是函数中的最后一条语句也是如此。

返回值的函数有时称为卓有成效的函数。

示例

给定的代码给出以下输出

def sum(a,b):
     return a+b
sum(5,16)

输出结果

21

发电机

生成器是迭代器或迭代器,例如列表和元组,但是您只能对其进行一次迭代。这是因为它们没有将所有值存储在内存中,而是即时生成这些值:

示例

mygenerator = (x*x for x in range(4))
for i in mygenerator:
      print i,

输出结果

0 1 4 9

由于生成器只能使用一次,因此我们无法再次在生成器中执行i运算:生成器只能计算0,然后忽略它,然后计算1、4,最后一次计算9,就可以了。

产量

yield是一个像return一样使用的关键字,只是函数将返回一个生成器。

我们使用以下代码访问生成器的返回,如下所示

示例

def createGenerator():
      for i in range(4):
           yield i*i      #  this code creates a generator
mygenerator = createGenerator()print(mygenerator) # mygenerator is an object!
# for i in mygenerator:
#      print i,
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))

输出结果

<generator object createGenerator at 0xb71e27fc>
0
1
4
9
Traceback (most recent call last):
  File "yieldgen1.py", line 12, in <module>
    print(next(mygenerator))
StopIteration

说明

上例中的yield语句创建了mygenerator。它只能使用一次。我们使用命令next(mygenerator)进行计算;它只能使用一次:首先计算0,然后将其忽略,然后第二次计算1,第三次计算4,第四次计算9,然后在第五次抛出,因为用尽了列表元素,因此出现StopIteration错误。