第十五章:匿名函数与内置函数

it2025-10-24  3

生成器send方法

send的工作原理a.send发生信息给当前停止的yieldb.再去调用__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('=============================')

递归

递归:函数直接或间接调用本身,都称之为递归回溯:找寻答案的过程递推:推出结果的过程​前提条件:a.递归必须有出口b.递归回溯递推的条件一定有规律​​案例一:获得第 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 = 1205! = 5 * 4!4! = 4 * 3!3! = 3 * 2!2! = 2 * 1!1! = 1def jiecheng(n):    if n == 1 or n == 0:        return 1    ji = n * jiecheng(n - 1)    return jires = jiecheng(5)print(res)

 

匿名函数

def fn(*args, **kwargs):    # 函数体    return '返回值'​ 匿名函数:a.匿名函数没有函数名b.匿名函数的关键字采用lambdac.关键字 lambda 与标识函数功能体 : 之间一定是参数,所以省略()d.匿名还是没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了​lambda *args, **kwargs: '返回值'​注意:a.参数的使用和有名函数一样,六种形参都支持b.返回值必须明确成一个值,可以为单个值对象,也可以为一个容器对象​a = lambda *args, **kwargs: '返回值1', '返回值2'print(a)  # (<function <lambda> at 0x0000022D0B7E88C8>, '返回值2')返回值1print(a[0]())​​正确返回两个值: 主动构成成容器类型lambda *args, **kwargs: ('返回值1', '返回值2')

 

max结合匿名工作原理

a.max内部会遍历iter,将遍历结果一一传给lambda的参数xb.依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值c.对外返回最大的遍历值max(iter, lambda x: x)​​# min工作原理一样,得到的是最小值​

 

常用的内置函数

map(lambda x: x * 2, [3, 1, 2]) # 将遍历结果映射为任意类型值 [6, 2, 4]​from functools import reducereduce(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']​​

a.与类型相关的

list() str() ord() chr() bool() int() ...​print(ord('A'))print(chr(97))​

b.进制转化

print(bin(10))  

# 1010

print(oct(10))  

# 12

print(hex(10))  ​​

c.常用操作类的

 range() len() iter() next() enumerate() id() type() print() input() open()​

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

e.数学相关运算

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/haojunliancheng/p/10815642.html

最新回复(0)