匿名函数
匿名就是没有名字,所以他就没办法调用,只能和某些方法联用
匿名函数语法 :lambda 参数:返回值
但是你如果真的想调用匿名函数,也可以赋值,但是他就变成了有名函数
f = lambda x,y : x**y
res = f(1,2)
print(res)
匿名函数基本上都是和内置方法联用
max/min 返回最大值/最小值
salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000,
'z': 1000
}
def func(name): # nick/jason/tank/sean/z
return salary_dict[name] # 3000/100000/5000/2000/1000
res = max(salary_dict, key=func) # 默认key的首字母
res = max(salary_dict, key=lambda name: salary_dict[name]) # 默认key的首字母
print(res)
# key=func默认做的事情
# 1. 循环遍历salary_dict,会取到所有的key值
# 2. 然后把所有的key值依次丢入func中,返回薪资
# 3. 通过返回的薪资排序,得到最大值
res = min(salary_dict, key=lambda name: salary_dict[name])
print(res)
fileter 筛选
def function(item): # 1/2/3/4
if item < 5:
return True
else:
return False
res = filter(function, [1, 2, 3, 4])
res = filter(lambda item: item > 2, [1, 2, 3, 4])
print(res) # 迭代器
print(list(res))
salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000,
'z': 1000
}
res = filter(lambda item: salary_dict[item] > 3000, salary_dict)
print(list(res))
map 映射
def function1(item):
return item + 2
res = map(function1, [1, 2, 3, ])
print(res)
print(list(res))
salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000,
'z': 1000
}
res = map(lambda salary:salary_dict[salary] +500,salary_dict)
print(list(res))
内置函数
或许能用到的
byte()解码字符
char()/ord()
char()参考ASCII吗表将数字装成对应字符串;ord()佳能字符串转成对应数字
divmod()分栏,编程中的整除求余
print(divmod(10,3)) # (3,1)
# 整数部 余数部
enumerate() 英语释义枚举,python中是带有索引的迭代
lt = ['a','b,'c']
for i in enumerate(lt)
print(i)
# (0,'a')
# (1,'b')
# (2,'c')
eval() 评估,把字符串翻译成数据类型
lis = '[1,2,3]'
lis_eval = eval(lis)
print(lis_eval)
# [1,2,3]
hash()判断是否可哈希
不一定用的到的
- abs:绝对值
- all:可迭代对象内元素全为真,则返回真。
- any:可迭代对象中有一元素为真,则为真。
- bin/oct/hex:二进制、八进制、十六进制转换
- dir:列举出模块所有的功能。
- frozenset:不可变集合
- gloabals/locals:查看全局名字/查看当前位置名字
- pow:
- round:
- slice:
- sum:
- _import_:通过字符串导入模块
异常处理的部分用法
异常处理: 报了错,进行处理
#
# print(1)
# num = input('请输入数字:')
#
# dic = {'a': 1}
#
# try:
#
# print(dic['b']) # KeyError
# 1 / int(num) # 报错之后,不运行下面的代码
#
# except ZeroDivisionError:
# print('傻逼,不能输入0')
# except KeyError:
# print('傻逼,不知道什么错误')
#
# print(2)
# print(1)
# num = input('请输入数字:')
#
# dic = {'a': 1}
#
# try:
#
# print(dic['b']) # KeyError
# 1 / int(num) # 报错之后,不运行下面的代码
#
# except Exception as e: # 万能异常,只要有错误,就捕捉
# print(e) # 错误的描述信息
# print('傻逼,不知道什么错误')
#
# print(2)
# # 异常捕捉只能捕捉逻辑错误
# fr = open('test.py')
# try:
# # 文件中途报错
# 1 / 0
# fr.close()
# except Exception as e:
# print(e)
# finally: # 无论你包不报错,都执行这一行
# print('finally')
# assert 断言 + 条件--> 被历史淘汰了
#
# num = input('num:')
#
#
# assert 1==int(num)
# raise 主动抛错误