匿名函数
匿名就是没有名字,所以他就没办法调用,只能和某些方法联用
匿名函数语法 :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 主动抛错误