函数之高阶函数
内置函数
1,初级内置函数
-
eval:执行字符串类型的代码,并返回最终结果。
eval('2 + 2') # 4 n=81 eval("n + 4") # 85 eval('print(666)') # 666
-
exec:执行字符串类型的代码。
s = ''' for i in [1,2,3]: print(i) ''' exec(s)
以上两个内置函数很强大 工作中禁止使用
-
hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。
print(hash(12322)) print(hash('123')) print(hash('arg')) print(hash('alex')) print(hash(True)) print(hash(False)) print(hash((1,2,3))) ''' -2996001552409009098 -4637515981888139739 1 2528502973977326415 '''
-
help:函数用于查看函数或模块用途的详细说明。
print(help(list)) print(help(str.split))
-
callable:函数用于检查一个对象是否是可调用的。如果返回True,仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
name = 'alex' def func(): pass print(callable(name)) # False print(callable(func)) # True
-
int:函数用于将一个字符串或数字转换为整型。
print(int()) # 0 print(int('12')) # 12 print(int(3.6)) # 3 print(int('0100',base=2)) # 将2进制的 0100 转化成十进制。结果为 4
-
float:函数用于将整数和字符串转换成浮点数。
-
complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。
print(float(3)) # 3.0 print(complex(1,2)) # (1+2j)
-
bin:将十进制转换成二进制并返回。
-
oct:将十进制转化成八进制字符串并返回。
-
hex:将十进制转化成十六进制字符串并返回。
print(bin(10),type(bin(10))) # 0b1010 <class 'str'> print(oct(10),type(oct(10))) # 0o12 <class 'str'> print(hex(10),type(hex(10))) # 0xa <class 'str'>
divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。
round:保留浮点数的小数位数,默认保留整数。
pow:求xy次幂。(三个参数为xy的结果对z取余)
print(divmod(7,2)) # (3, 1) print(round(7/3,2)) # 2.33 print(round(7/3)) # 2 print(round(3.32567,3)) # 3.326 print(pow(2,3)) # 两个参数为2**3次幂 print(pow(2,3,3)) # 三个参数为2**3次幂,对3取余。
-
bytes:用于不同编码之间的转化。
# s = '你好' # bs = s.encode('utf-8') # print(bs) # s1 = bs.decode('utf-8') # print(s1) # bs = bytes(s,encoding='utf-8') # print(bs) # b = '你好'.encode('gbk') # b1 = b.decode('gbk') # print(b1.encode('utf-8'))
-
ord:输入字符找当前字符编码的位置
-
chr:输入当前编码的位置数字找出其对应的字符
# ord 输入字符找该字符编码的位置 # print(ord('a')) # print(ord('中')) # chr 输入位置数字找出其对应的字符 # print(chr(97)) # print(chr(20013))
-
repr:返回一个对象的string形式(原形毕露)。
# %r 原封不动的写出来 # name = 'taibai' # print('我叫%r'%name) # repr 原形毕露 print(repr('{"name":"alex"}')) print('{"name":"alex"}')
-
all:可迭代对象中,全都是True才是True
-
any:可迭代对象中,有一个True 就是True
# all 可迭代对象中,全都是True才是True # any 可迭代对象中,有一个True 就是True # print(all([1,2,True,0])) # print(any([1,'',0]))
高阶函数
-
abs():绝对值--返回的都是正数
-
lis = [1,2,-3,-5,6] print([abs(i) for i in lis]) ################## [1, 2, 3, 5, 6]
-
enumerate:枚举--(可迭代对象,序号的起始值)默认的起始值是0
-
lis =[1,2,3,4,5,6] print([i for i in enumerate(lis)]) print([i for i in enumerate(lis,10)]) ########################## [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)] [(10, 1), (11, 2), (12, 3), (13, 4), (14, 5), (15, 6)]
-
max() :取最大值
-
min():取最小值
-
sum():求和
-
lis = [1,2,3,4,5,6] print(max(lis)) print(min(lis)) print(sum(lis)) ############## 6 1 21
-
range():可迭代对象
-
Python2
- range(0,10) :获取的是一个列表
- xrange(0,10):或取的是一个可迭代对象
-
Python3
- range():是一个可迭代对象
- range.iter()
-
sep="" :多个元素的连接符
-
end="" :end"\n", end"\t" ,end==" "
-
dict()
-
tu =( (1,2),(2,3),(3,4)) print(dict(tu)) print(dict([i for i in enumerate(range(6),1)])) print(dict(key=1,a=b)) ################################# {1: 2, 2: 3, 3: 4} {1: 0, 2: 1, 3: 2, 4: 3, 5: 4, 6: 5} {'key': 1, 'a': 2}
-
list():可迭代对象迭代到列表中
-
print(list('david')) ['d', 'a', 'v', 'i', 'd']
-
zip() :拉链,按照最少的进行合并
-
lis = [1,2,3,4,5] lis1 = ['a','b','c','d','e','f'] print(dict(zip(lis,lis1))) print(dict(list()zip(lis,lis1))) ########################## {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'} {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
-
dir:查看当前函数的方法
-
print(dir(list))
匿名函数
-
lambda:关键字
-
语法:函数名 = lambda 参数:返回值
参数位置是函数的形参,形参之间用逗号隔开
返回值在冒号之后设置
参数位置可以没有形参,但是必须有返回值
-
匿名函数不管多复杂,只能写一行,且逻辑结束后直接返回数据,只能返回一种数据类型
-
func = lambda x:x print(func(2)) #################### print((lambda x:x)(2)) #################### lis = [lambda x:x*x for x in range(5)] print(lis[2](2)) #################### lis = [lambda : x for i in range(5)] print(lis[2]()) ###################### 2 2 4 16
常用函数
-
format()
- format(13,">20") 右对齐
- format(13,"<20") 左对齐
- format(13,"^20") 居中
- format(13,'o8b') 十进制转换二进制
- format(13,"08d") 十进制加八位
- format(13,'08o') 十进制转换成八进制
- format(13,'08x') 十进制转换成十六进制
-
filter() :筛选过滤
-
语法:filter(function,iterable)
- function :用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回单True或者False来判断是否表刘此项数据
- iterable:可迭代对象
-
lis = [1,2,3,4,5,6,7] def func(s): return s>3 lis = list(filter(func,lis)) print(lis) ############################ print(list(filter(lambda x : x % 2 == 1 ,lis)))
-
map():对象映射
-
map(function,iterable),可以对可迭代对象中的每一个元素进行映射,分别执行function
-
print(list(map(lambda x : x*x,[1,2,3,5,7,6,9]))) ########################## [1, 4, 9, 25, 49, 36, 81]
-
reversed :反转
-
反转后的新建空间,相当于copy后反转
-
列表的reverse反转后的内存地址不变
-
sorted :排序函数
-
语法(iterable.key=None,reverse=False)
-
iterable :可迭代对象
-
key:排序规则,指定函数,在sorted内部会将可迭代对象中的每一个元素传递个这个函数的参数,根据函数运算的结果进行排序
-
reverse:是否是倒序,True 倒序;False 正序;
-
lis = [1,3,2,4,64,2,9] lis1 = sorted(lis) print(lis) ###原列表不会变 print(lis1) ###返回单列表是经过排序的
-
字典用sorted排序
-
dic= {1:'a',2:'b',3:'c'} print(sorted(dic) ###字典排序返回的就是排序后的key ################### [1,2,3])
-
-
reduce l:累计算
-
print(reduce(lambda x,y:x-y,[1,2,3,4,5])) ################ 15
-