原标题:python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器]
原文来自:CSDN 原文链接:https://blog.csdn.net/Web_Student/article/details/103793179
返回值
return语句
def max(x,y):
if x >y:
return x #结束函数的运行 并且将结果返回给调用的地方
else:
return y
print(y) #没有执行print
#后面的代码不会执行
#调用函数 接受返回值
# num = max(1,2) #声明一个变量num 接受调用函数后的返回值
# print(max(1,2)) #观察接受的返回值 返回值会返回到调用的地方
def sum(x,y):
return x,y
函数类型
无参数,无返回值的函数
无参数,有返回值的函数
有参数,无返回值的函数
有参数,有返回值的函数
yield
yield 的作用就是把一个函数变成一个generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个生成器,如调用函数,不会执行该函数,而是返回一个iterable迭代对象( 可以用for in 遍历得对象度可以叫做是可迭代对象:Iterable)!
使用生成器可以达到延迟操作的效果,所谓延迟操作就是指在需要的时候
产生结果而不是立即产生就结果,节省资源消耗,和声明一个序列不同的是
生成器,在不使用的时候几乎是不占内存的。
迭代器
迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式
迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束
迭代器只能往前不会后退。 迭代器有两个基本的方法:
iter()和
next()字符串,列表或元组,集合对象都可用于创建迭代器
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
print (next(it)) # 输出迭代器的下一个元素 1
print (next(it))
生成器(generator)
使用了 yield 的函数被称为生成器
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次从当前位置继续运行
注意:可以通过for循环或者手动调用 Xun(5) 的 next() 方法
a = (x for x in range(10000000)) #不是元组推导式
print(a) #这里不会输出print(next(a))#输出0
print(next(a))#输出1print(next(a))#输出2
print(next(a))#输出3
#每执行一次print(next(a))就依次输出一个元素
生成器-send(generator)
a = yield 1 这个表达式,如果这个表达式只是x = 1,相信每个人都能理解是把1的值赋值给了x.
而现在等号右边是一个yield 1,所以先要执行yield 1,然后才是赋值.
yield把1值返回到了调用者那里,因为执行等号右边的yield就是暂停,所以不会对a赋值
那这个表达式的下一步操作:赋值,却换句话说a = yield 1 只执行了一半而send()里面的值的作用是把值传进当前的yield.
'''
send使用
'''
def gen():
i = 0
while i < 5:
temp = yield i #不是赋值操作
#使用了yield之后是一个生成器
print(temp) #因为 yield 之后返回结果到调用者的地方,暂停运行 ,赋值操作没有运行
i+=1
a = gen()
print(next(a))
print(next(a))
print(a.send('王大锤')) #可以将值发送到 上一次yield的地方
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com