Python全栈Day 16部分知识点
函数
匿名函数
lambda通常和其他函数联合使用,不该独立存在。
可以返回多个值:
f=lambda x,y,z:(x+1,y+1,z+1)
print(f(1,2,3))
输出
(2,3,4)
编程的方法(不同流派):
面向过程:基本编程单位是函数(大过程拆分成小的部分)
函数式 :编程语言定义的函数+数学意义的函数(精简但不易读)
面向对象
函数式编程
不可变(不用变量保存状态,不修改变量);函数即变量;尾调用(在函数的最后一步调用另外一个函数,最后一行不一定是函数的最后一步,'return 函数名(参数)+数字'不算尾调用,实际分为两步:res=函数名(参数)然后是res+数字)。函数式编程实现简单,但易读性差。
#!/usr/bin/env python # -*- coding:utf-8 -*- def foo(n): print(n) def bar(name): print('my name is %s'%name) foo(bar('alex'))
输出
my name is alex
none
函数的返回值可以是函数(本身或者任意函数)
return 函数名() 代表的是return这个函数的返回值
高阶函数:满足函数接收的参数是一个函数名或者返回值中包含函数的函数。
尾递归调用优化,省着保存之前的状态。
map函数
普通程序写法
1 # 终极版本 2 def map_test(func, array): 3 ret = [] 4 for i in array: 5 res = func(i) 6 ret.append(res) 7 return ret 8 print(map_test(lambda x: x + 1, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
输出
[2, 3, 4, 5, 6, 7, 8, 9, 10]
使用map函数:(python2中生成的直接就是列表;map的处理方法不一定非是lambda函数,如果逻辑复杂,使用自定义函数;map的可迭代参数不一定是列表,可迭代的都可以)
num_1=[1, 2, 3, 4, 5, 6, 7, 8, 9]
res=map(lambda x:x+1,num_1) #生成的是迭代器,只能迭代一次。处理方法+可迭代对象。
print(list(res))
filter函数
filter留下满足函数的参数。
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 move_people=['x_sb','y','z_sb','w'] 4 ret=filter(lambda n:not n.endswith('sb'),move_people) 5 print(list(ret))
输出
['y', 'w']
reduce函数
from functools import reduce
reduce(lambda x,y:x*y,num_l,1) #函数、对象、初始值
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 from functools import reduce 4 s='abcdefg' 5 print(reduce(lambda x,y:x+'_'+y,s))
输出
a_b_c_d_e_f_g
map/filer/reduce总结
map:处理序列中的每个元素,得到的结果是一个‘列表’,该‘列表’元素个数及位置与原来一样。
filter:遍历序列中的每个元素,判断每个元素得到布尔值,如果是true则留下来。
reduce
内置函数
abs()取绝对值
all()判断括号内元素转化为布尔值之后是否都是真值或者可迭代对象为空都输出true
any()只要有一个是真的就返回true
bin()10->2进制
hex()10->16进制
oct()10->8进制
bool()
bytes()字符串转换为字节l,编码 #转化为二进制 bytes('你好',encoding='utf-8') #字符串在内存上编码是unicode #用什么编码就用什么解码bytes('你好',encoding='utf-8').decode('utf-8') #如果不写,python3默认utf-8解码
chr() 例如:chr(97) 即'a'
dir()某个对象下有哪些方法(只有名字) 比如dict
divmod()分页功能 divmod(10,3)总共10条记录,一页显示3条
enumerate()
eval()把字符串中的数据结构提取出来 dic_str='{'name':'alex'}' d=eval(dic_str) print(d['name']) 输出'alex' 另外,可以把字符串中的表达式进行运算
hash()进行哈希运算的,可哈希的数据类型即不可变数据类型,对应的哈希值固定且哈希值不可反推。不管传入参数长度多长,转化为哈希值长度都固定。用于查看看数据有没有被篡改。
help()
isinstance() 例如print(isinstance(1,int)) 输出true
globals()显示全局变量
locals()显示局部变量
max() ; min()
上一篇: 野指针与'关键字'NULL
下一篇:
python 发送邮件