内置函数与匿名函数
内置函数
1.取绝对值的内置函数: abs
print(bas(-9)) #-9的绝对值会被打印出来
2. 处理可迭代对象的函数(一):all
name = ("Tom","Jack","Lily")
print(all(name)) #因name这个变量定义的可迭代对象是一个正确的列表
所以实print执行会返回Truse,只有可迭代对象全为真,
返回结果才为True.
3.处理可迭代对象函数(二):any
name = ("Tom","Jack","Lily",[]) #这本身并不是一个列表
print(any(name)) #返回结果会是True,因为any函数对对象处理是或的关系
只有列表中的元素全为假,返回值才为假
4.将十进制转换成二进制的函数 bin()
num = 10
print(bin(num) #0b1010 0b意为转换的是二进制形式
5.将十进制转换成八进制的函数 oct()
print(oct(10)) #这是一种简写形式,直接转换,o012
6.将十进制转换成十六进制的函数:hex()
print(hex(19)) #19转换成十六进制形式打印
7.对结果进行判断的函数 bool()
print(bool(2>3)) #返回False,可以在函数体中加入bool
8.将字符类型转换成十六进制位的字节码后并打印
print(bytes("jiahb",encoding="utf-8")) #在转换的最后加上编码类型,gbk utf-8
9.将十六进进制字节码转换成字符串(或汉字),反编译
print(str(bytes("jiahb",encoding="utf-8"))) #最后打印出的依然是alex,反编译了。
10.判断函数是否可以被调用 callable
def f1():
pass
f2=(121)
print(callable(f1)) #判断一个是函数是否可以被调用,其实就是判断一个函数是否是完整的
11.将数字转换成ASSIC码表中对应的值 chr
print(chr(1)) #还有ASSIC码表中可能对应了一个空的值,即没有返回值。
12.将字符串编译成python代码 complile()
name = "jiab"
b = compile(name,'','','exec')
exec(b) #使用compile模块下的exec方法对name这个变量定义的字符串进 行编译,编译结果是没有返回值的
print(eval("8*8")) #打印8*8的计算结果,但是有返回值
print(exec("8*8")) #没有返回值,只会打印下None
13.快速查看模块提供了哪些功能 dir()
a. print(dir(compile)) #查看compile这个内置函数的基本功能
也可以查看导入模块的基本功能信息
b.import json
print(dir(json)) #查看json模块的基本功能
14.求两个数的商和余数 divmod()
num = divmod(12,8)
print(divmod)
print(num[0]) #取商
print(num[1]) #取余数
15.判断对象是否是某个类的实例 isinstance
name = "jiahb"
print(isinstance(s,str)) #创建的对象"jiahb"是否是str这个类的实例,是则True,不是则False.
16.查看创建变量的内存地址 id()
name = "jiahb"
print(id(name)) #返回一串数字,即内存的地址
17.将创建的对象转换成浮点型 float()
name = "12"
print(float(name)) #转换成12.0
18. 将对象转换成hash值 hash()
name = "jiahb"
print(hash(name)) #求定义的变量的一个哈希值,并将其当作key进行存储(这点儿没太明白)
19.创建一个迭代器 iter() 后续再加
20.查看python创建变量的字符串的长度,也可以按字节查看 len()
python3默认是按字符查看,pyhon2.7只能按字节查看
name = "jiahb"
print(len(name))
python3.0按字节查看
b = bytes(name,encoding='utf-8')
print(len(b)) #将转换成的字节数打印出来
21.对多个数字进行求和运算 sum()
print(sum(11,22,33,44)) #多个数字累加求和
22.求若干数字中最大最小值 max() min()
print(max(11,22,33,44))
print(min(11,22,33,44))
23.求某个数的指数 pow()
print(pow(2,10)) #2**10会打印
24.面向对象中会用到的内置函数 repr()
25.求序列的反转 reverse()
注:reverse这个反转函数只能处理列表,不能处理元组
num = [11,22,33,44]
num.reverse()
print(num)
26.把一个字母转换成数字 ord()
print(ord("a")
27.求四舍五入的数 round()
print(round(float(1.9)) #返回2
28.slice 切片功能 python3.0新加功能
29.循环是取位置对应符号enumerate()
dic={'name':'egon','age':18}
for i in enumerate(dic):
print(i)
结果 : (0,'name')(1,'age')
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
def func(x):
return salaries[x]
print(max(salaries,key=lambda x:salaries[x]))
min
zip
映射 map()
map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回
map:映射
l=[1,2,3,4]
m=map(lambda x:x**2,l)
print(list(m))
names=['alex','wupeiqi','yuanhao']
print(list(map(lambda item:item+'_SB',names)))
reduce:合并
from functools import reduce
res=0
for i in range(100):
res+=1
print(reduce(lambda x,y:x+y,range(100),100))
filter:过滤
names=['alex_sb','yuanhao_sb','wupeiqi_sb','egon']
print(list(filter(lambda name:name.endswith('_sb'),names)))
sorted
l=[1,2,4,9,-1]
print(sorted(l)) #从小到大
print(sorted(l,reverse=True)) #从大到小
匿名函数:
关键字
lambda
表示匿名函数,冒号前面的x
表示函数参数。匿名函数有个限制,就是只能有一个表达式,不用写
return
,返回值就是该表达式的结果。用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
范例:
l=[1,2,3,4]
m=map(lambda x:x**2,l)
print(list(m))
names=['alex','wupeiqi','yuanhao']
print(list(map(lambda item:item+'_SB',names)))
范例:活用列表解析
with open('goods',encoding='utf-8') as f:
# for line in f:
# l=line.split()
# goods_info.append({'name':l[0],'price':l[1],'count':l[2]})
goods_info=[{'name':line.split()[0],'price':float(line.split()[1]),'count':int(line.split()[2])} for line in f \
if float(line.split()[1]) > 3000]
print(goods_info)