对今天知识的回顾15

本文深入探讨了Python中的高级编程概念,包括生成器的send方法、递归、匿名函数及内置函数的应用。通过具体案例,解析了send方法的工作原理,递归的实现方式,匿名函数的构造,以及如何有效利用内置函数提升代码效率。

今天我们学习了

1.生成器的send方法  

2.递归:函数自己掉自己

3.匿名函数

4.内置函数

生成器send方法

send的工作 原理

1.send发生信息给当前停止的yield

2.再去调用——next——(方法),生成器接着往下指向,返回下一个yield值并停止

案例:
persons = ['张三', '李四', '王五', '赵六', '钱七']

def order(persons):
for i in range(len(persons)):
if i == 0:
print('%s在面试' % persons[0])
else:
print('%s叫%s在面试' % (name, persons[i]))
print('%s面试完毕' % persons[i])
name = yield persons[i]

obj = order(persons)
for i in range(len(persons)):
if i == 0:
p = obj.__next__()
else:
p = obj.send(p)
print('=============================')

递归

函数直接或间接调用本身,都称之为递归

回溯:找寻答案的过程

前提条件:

1:递归必须有出口

2:递归回溯递推的条件一定有规律

# 案例一:获得第 count 个人的年纪
def get_age(count):
if count == 1:
return 58
# 第 九...一 个人 - 2
age = get_age(count - 1) - 2
return age

age = get_age(3)
print(age)


 案例二:求n的阶乘 5! = 5 * 4 * 3 * 2 * 1 = 120
# 5! = 5 * 4!
# 4! = 4 * 3!
# 3! = 3 * 2!
# 2! = 2 * 1!
# 1! = 1
def jiecheng(n):
if n == 1 or n == 0:
return 1
ji = n * jiecheng(n - 1)
return ji
res = jiecheng(5)
print(res)

匿名 函数def fn(*args, **kwargs):

 函数体
return '返回值'

匿名函数:

1.匿名函数没有函数名

2.匿名函数的关键字采用lambda

3.关键字lambda与表示函数功能提:之间一定是参数所以省略()

4.匿名还是没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了

注意:

1.参数的使用和有名函数一样,六种形参都支持

2.返回值必须明确成一个值,可以为单个值对象,也可以为一个容器对象

a = lambda *args, **kwargs: '返回值1', '返回值2'
print(a) # (<function <lambda> at 0x0000022D0B7E88C8>, '返回值2')
 返回值1
print(a[0]())


# 正确返回两个值: 主动构成成容器类型
lambda *args, **kwargs: ('返回值1', '返回值2')

max结合匿名工作原理

1,max内部会遍历iter,将遍历结果一一传给lambda的参数x

2,依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值

3,对外返回最大的遍历值

max(iter, lambda x: x)

 min工作原理一样,得到的是最小值

常用的内置函数

map(lambda x: x * 2, [3, 1, 2]) # 将遍历结果映射为任意类型值 [6, 2, 4]

from functools import reduce
reduce(lambda x, y: x * y, [3, 1, 2]) # 6

sorted(iter, fn, reverse)
dic = {
'owen': (1, 88888),
'zero': (2, 66666),
'tom': (3, 77777),
}
res = sorted(dic, key=lambda k: dic[k][1])
print(res) # ['zero', 'tom', 'owen']

res = sorted(dic, key=lambda k: dic[k][1], reverse=True)
print(res) # ['owen', 'tom', 'zero']

 1.与类型相关的
 list() str() ord() chr() bool() int() ...

print(ord('A'))
print(chr(97))

 2.进制转化
print(bin(10)) # 1010
print(oct(10)) # 12
print(hex(10)) # a

print(0b1111) # 15
print(0o10) # 8
print(0x11) # 17


 3.常用操作类的
 range() len() iter() next() enumerate() id() type() print() input() open()

 4.原义字符串
print(r'a\nb')
print(ascii('a\nb'))
print(repr('a\nb'))


 5.数学相关运算
abs() sum() max() min() pow() sorted()
print(abs(-1))
print(pow(2, 3)) # 2**3
print(pow(2, 3, 3)) # 2**3%3

 

转载于:https://www.cnblogs.com/zahngyu/p/10796338.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值