Day6_内置函数
定义完一个有名函数,可以直接利用函数名+括号来执行,例如:func()
有名函数:
def func(x,y,z=1): return x+y+z
匿名函数:
lambda x,y,z=1:x+y+z #与有参函数相比:
#1,函数体没有名字 2,函数体自带return,不用加return
#只利用一次就不用的,临时使用的
一些内置函数的意思:内置函数又被称为工厂函数
abs():取绝对值
#布尔值为假的情况:None,空,0,False
all():传可迭代对象,判断是不是所有的值布尔值是不是为真。
any() :传可迭代对象,只要有布尔值为真就为真。
bin():2进制
oct():8进制
hex():16进制
bytes:
unicode---encode----bytes
print('hello'.encode('utf-8'))=print(bytes('hello',encode='utf-8'))
callable():是否能够被调用的
chr():根据ASCI表的位置输出值
ord():根据ASCI表的值来输出位置
int():整型
complex():复数
float():浮点型
str():字符串
list():列表
tuple():
dict():字典
frozenst():不可变集合
divmod(): 将商和余数放到一起,例子:divmod(10,3) 结果为:(3,1)
globals,locals:查看全局作用域和局部作用域
hash():校验一段字符串,得到一堆数字,只要是内容一样,得到的结果是一样的。
help():查看函数里边的注释信息
id():访问id的一串ID号,只是python解释器实现的功能,反应了变量在内存的位置。
isinstance():
x=1 print(isinstance(x,int)) #判断x是不是int的实例
max:求最大值
min:最小值
repr:把对象转换成字符串。
reversed:将列表内的内容反转。
round:将数字变为多少位小数,利用四舍五入。eg:print(3.478,2)
l=[1,2,3,4,5,6] print(l[0:4])#取得是下标0-4的值 print([0:4:2])#去下标是0-4的值,而且隔2个取一个
#slice:指定一种想要数据的方法,跟上面一样。
s=slice(0,4,2)
print(l[s])
zip:拉链
s='hello' l=[1,2,3,4,5] res=zip(s,l) print(list(res)) #结果是[('h,'1)........]
内置函数与匿名函数结合使用:
求字典中工资最高的那个人名:
salaries={ 'egon':3000, 'alex':110000, 'wupeiqi':1000, 'yunahao':2000 } #将字典的key和值反转
#print(zip(salaries.values(),salaries.key()))
print(max(zip(salaries.values(),salaries.key())))
#或者这样写
#max(salarie,key=lambda name:salaries[name])
def get_value(name)
return salaries[name]
print(sorted(salaries,key=get_value))#这样得到的人名是从大到小排列的
print(sorted(salaries,key=get_value,reverse=True))#这样是将人名从大到小的值反转,也就是从小到大
map:把一堆值映射成一堆新值。
例如:将不是yangshuai的值加上一个丑的后缀。
name=['yangshuai','datuo','chenhao','dafei'] #map(lambda x:x+'_SB',name)#这个是一段内存地址 res=map(lambda x:x+'_SB',name) print(list(res))
#也可以指定哪个值不加
res=map(lambda x:x if x == 'yangshuai' else x:x+'_SB',name)
print(list(res))
算下从1-100的和:
from functools import reduce print(reduce(lambda x,y:x+y,range(101)))
#如果数列有初始值,可以在后边加上
print(reduce(lambda x,y:x+y,range(101),100))
将某些数据过滤出来:
name=['yangshuai', 'datuo_SB', 'chenhao_SB', 'dafei_SB'] res=filter(lambda name:name.endswith('SB'),name) print(list(res))
eval:将文本命令执行一遍。
cmd='print(x)' x=1 eval(cmd,{'x':0},{'x':1000}) #当全局不存在全局变量时候会报错,可以指定一个全局变量和局部变量。 #第一个值是全局变量,第二个是局部变量,当局部变量生效的时候,全局变量不会生效