匿名函数
#匿名函数没有绑定名,使用一次即被回收,加括号即运行
#当把变量名赋给匿名函数时,匿名函数变成有名函数
res = (lambda x,y: x+y)(1,2) #res = 3
匿名函数与内置函数联用
salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000
}
print(f"max(salary_dict): {max(salary_dict)}") #默认比较字典的key
def func(k):
return salary_dict[k]
#将可迭代对象变成迭代器对象
#res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据
#求最大值
print(f"max(salary_dict, key=func()): {max(salary_dict, key=func)}")
print(
f"max(salary_dict, key=lambda name: salary_dict[name]): {max(salary_dict, key=lambda name: salary_dict[name])}")
# # key=func默认做的事情
# # 1. 循环遍历salary_dict,会取到所有的key值
# # 2. 然后把所有的key值依次丢入func中,返回薪资
# # 3. 通过返回的薪资排序,得到最大值
# 排序
print(
f"sorted(salary_dict, key=lambda name: salary_dict[name]): {sorted(salary_dict, key=lambda name: salary_dict[name])}")
map
#map(func, *iterl) 映射
name_list = ['jason', 'tank', 'sean']
res = map(lambda name: f"{name} sb", name_list)
print(f"list(res): {list(res)}")
>>>
list(res): ['jason sb', 'tank sb', 'sean sb']
filter
#filter(function, iterable) 按条件筛选,返回一个迭代器,function也可以写None
name_list = ['nick', 'jason sb', 'tank sb', 'sean sb']
filter_res = filter(lambda name: name.endswith('sb'), name_list)
print(f"list(filter_res): {list(filter_res)}")
>>>
list(filter_res): ['jason sb', 'tank sb', 'sean sb']
内置函数
# bytes(str, enconding) 解码字符,转成二进制(pycharm终端打印16进制)
# bytes(str, encoding = 'utf-8')
# str.encode(''utf-8)
# chr()/ord() 参考Ascii码表,chr():数字转字符,ord()字符转数字
# divmod(a, b) 返回元组(a//b, a%b)
# enumerate(iterable) 返回带索引的迭代
# eval(str) 将字符串转成对应数据类型,也可以返回字符串中的结果('3*7'->21)
# hash(object) 返回对象object的hash值
# abs(i) 返回绝对值
# all(iterable) 可迭代对象内元素全为真,则返回真;*空元组、空列表返回值为True
# any(iterable) 可迭代对象中有一元素为真,则为真;*空元组、空列表返回值为False
# bin()/oct()/hex() 转二进制/八进制/十六进制
# dir() 返回模块的所有功能
# frozenset() 返回一个不可变集合(强制类型转换)
# globals/locals 以字典形式返回所有全局/当前位置的变量
# pow(x,y,z=1) 返回(x**y)%z
# round(float,n=0) 返回浮点数的四舍五入值,n是舍入的小数位数,默认是0,即返回整数
# slice(start, stop, step) 设置切片(print(lis[slice(1, 5, 1)]))
# sum(iterable) 求和
# __import__() 动态导入模块?
异常处理
while True:
try:
1/0
except Exception as e:
print(e)
break