首页 > 代码库 > 内置函数与匿名函数

内置函数与匿名函数

内置函数
 
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)

内置函数与匿名函数