基于jupyter notebook的Python学习(四)生成器,函数变量, 对象

本文介绍了Python中的生成器、函数参数和闭包的概念。生成器包括生成式和函数形式,通过yield关键字实现。函数参数部分讨论了位置参数、默认参数、可变参数和关键字参数的使用规则。还提到了匿名函数与sorted函数的结合,以及高阶函数如filter、map和reduce的应用。此外,讲解了type函数获取数据类型和类的初始化与删除过程。最后,深入解析了闭包的工作原理和作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 生成器、生成式及函数的区别。

(1)生成式的定义方式为  [表达式 循环语句 [判断条件]]

list的表达方式为[,],tuple的表达方式为(,),dict的表达方式为{:,},集合的表达方式为{,},故可知生成式的返回结果是list。

[x*x+y*2 for x in range(5) for y in range(9) if x%2==0 if y%3==0]
result:
[0, 6, 12, 4, 10, 16, 16, 22, 28]

l2 = [(x*x,y*2) for x in range(5) for y in range(9) if x%2==0 if y%3==0]
type(l2)
l2
result:
list
[(0, 0), (0, 6), (0, 12), (4, 0), (4, 6), (4, 12), (16, 0), (16, 6), (16, 12)]

(2)生成器有2中配置方法,一种和生成式类似,通过(表达式 循环语句 [判断条件])来实现,一种和函数类似,通过yield关键字来实现。

l1 = [i for i in range(5)]
print(f1)
g2 = (i for i in range(5))
print(g2)
# print(list(g2))
print(next(g2),next(g2),next(g2),next(g2),next(g2))
def func():
    for i in range(5):
        return i
        return 'f'
    
def gene():
    for i in range(5):
        yield i
        yield 'f' 
        i+=1
print(func())
g1=gene()
print(g1)
print(next(g1),next(g1),next(g1),next(g1),next(g1),next(g1),next(g1),next(g1),next(g1),next(g1))
result:
[0, 1, 2, 3, 4]
<generator object <genexpr> at 0x00000000059B5888>
0 1 2 3 4
0
<generator object gene at 0x00000000059B51A8>
0 f 1 f 2 f 3 f 4 f

生成器的表达式形式和生成式形式和功能都一样,只是返回结果不一样,生成式返回的是列表,而生成器返回的是一个迭代器。list可以直接访问,但不能通过next来访问,因为list不是迭代器,而是一个可迭代的对象。生成器可以通过next来访问,也可以通过类型转换转换成list类型然后再进行访问。

生成器的函数形式和普通函

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值