Python3 函数进阶3

匿名函数

定义匿名函数

我们之前定义的函数都是有名函数, 我们可以通过函数名来调用

匿名函数顾名思义就是一种没有绑定函数名的函数, 使用一次既被回收

  • 匿名函数结构: lambda 参数 : 返回值
# 输入两个参数, 返回两个参数得和
lambda x, y: x+y

匿名函数的使用

我们如何使用匿名函数呢? 由于匿名函数的特性, 匿名函数通常与其他内置方法联用

  • max()/min() + 匿名函数
# 取出年龄最大者的姓名
age_dict = {
    'bigb': 20,
    'blake': 22,
    'tom': 24,
    'jason': 26
}

# 有名函数实现方法
def func(name):
    return age_dict[name]

res = max(age_dict, key=func)  
print(res)  # jason
'''
max()方法会遍历age_dict得到key
将key依次传入func中, 返回年龄
再对年龄排序,得到最大值
'''

# 匿名函数实现方法
res = max(age_dict, key=lambda name: age_dict[name])
print(res)  # jason

  • filter() + 匿名函数
# 取出年龄大于22岁者的姓名
age_dict = {
    'bigb': 20,
    'blake': 22,
    'tom': 24,
    'jason': 26
}


res = filter(lambda name: age_dict[name] > 22, age_dict)
print(list(res))  # ['tom', 'jason']
'''
filter()方法会遍历age_dict得到key
将key依次传入匿名函数, 返回大于22
res本质上是迭代器对象
'''
  • map() + 匿名函数
# 返回由(lis元素+2)组成的列表
lis = [1, 2, 3]

def func(item):
    return item + 2

res = map(func, lis)
print(list(res))  # [3, 4, 5]


# 匿名函数实现方法
res = map(lambda item: item + 2, lis)
print(list(res))  # [3, 4, 5]
  • sorted() + 匿名函数
# 将四个人姓名按年龄降序排列
age_dict = {
    'bigb': 20,
    'blake': 22,
    'tom': 24,
    'jason': 26
}

def func(name):
    return age_dict[name]


res = sorted(age_dict, key=func, reverse=True)
print(res)  # ['jason', 'tom', 'blake', 'bigb']

# 匿名函数实现方法
res = sorted(age_dict, key=lambda name: age_dict[name], reverse=True)
print(res)  # ['jason', 'tom', 'blake', 'bigb']

内置函数

  • enumerate() 返回包含元素索引和元素的对象
lis = [1, 2, 3]
for ind,val in enumerate(lis):
    print(ind, val)
    
'''
0 1
1 2
2 3
'''
  • eval() 去除字符串的引号, 留下来什么就是什么
s = '[1, 2, 3]'
print(type(eval(s)), eval(s))  # <class 'list'> [1, 2, 3]
  • divmod() 取整取余
  • chr/ord ASCII和字母转换
  • hash 是否可哈希
  • bytes 解码字符
  • round 四舍五入
  • dir 列出模块所有方法
  • globals/locals 列出所有全局变量/列出当前位置所有变量
  • pow 求次方
  • any/all 迭代对象内的元素有一个为True则为True/所有为True则为True
  • abs 绝对值
  • sum 求和
原文地址:https://www.cnblogs.com/bigb/p/11585714.html