python使用笔记007-内置函数,匿名函数
1、匿名函数
匿名函数也是一个函数,是一个简单的函数,没有名字,只能实现一些简单的功能
1 #匿名函数也是一个函数,是一个简单的函数,没有名字,只能实现一些简单的功能 2 lambda x:x+1#入参,返回值 3 4 def f2(x):#这个方法与上边的匿名方法实现的内容一样 5 return x+1 6 7 print(f2(1))
2、内置函数
2.1 常用的内置函数
1 print(max([123,423,1,2,3,45,332]))#取最大值 2 print(sum([123,423,1,2,3,45,332]))#求和 3 print(divmod(10,3))#余数 4 print(round(11.222222,2))#取几位小数 5 l = ['u1','u2','u3'] 6 l2 = ['p1','p2','p3'] 7 print(list(zip(l,l2)))#将两个list和为一个二维数组 8 print(dict(zip(l,l2)))#将两个list和为一个字典
1 l = [1,2,34,12,32,98,3221,98,34,532] 2 print(sorted(l))#排序 3 print(sorted(l,reverse=True))#降序排序 4 print(l) 5 6 l2 = [ 7 ['xiaobai',12], 8 ['xiaohei',11], 9 ['lisi',98], 10 ['wangwu',34] 11 ] 12 #lambda x:x[-1],传入的参数是每次循环的值
13 l3 = sorted(l2,key=lambda x:x[-1])#二维数组排序,key是传一个函数名,是指用哪个参数来进行排序 14 print(l3) 15 def user_key(x): 16 return x[-1] 17 #key是传一个函数名,由sorted循环排序时去调用该函数 18 l4 = sorted(l2,reverse=True,key=user_key) 19 print(l4)
1 l = [1,2,34,12,32,98,3221,98,34,532] 2 #循环把list的每个参数传给函数, 3 #根据某个规则来过滤list里的参数 4 result = filter(lambda x:x>5,l) 5 stri = 'fdsfrewrwerwrffdsf' 6 str_result = filter(lambda x:x!='f',stri) 7 print(list(str_result)) 8 print(list(result)) 9 #保留函数返回的值,就是循环执行函数 10 map_result = map(lambda x:x>5,l) 11 print(list(map_result)) 12 map_result1 = map(lambda x:str(x).strip().zfill(3),l) 13 print(list(map_result1)) 14 15 for index,i in enumerate(l,1):#将list转为带下标的二维数组,传1是从1开始,默认从0开始 16 print('%s -> %s'%(index,i))
1 str_code = ''' 2 l = [1,2,34,12,32,98,3221,98,34,532] 3 map_result1 = map(lambda x:str(x).strip().zfill(3),l) 4 print(list(map_result1)) 5 print('hhhh') 6 ''' 7 #让程序自动帮你执行代码,可以执行所有的python代码 8 #用exec方法有风险,比如执行os.remove()把文件删除等 9 exec(str_code) 10 11 result = eval('{"name":"xiaohei","age":"19"}')#执行python代码,只能执行简单的,定义数据类型和运算 12 print(result)
2.2 不常用的内置函数
1 print(all([1,2,3,4,5,0]))#判断可迭代对象里的值是否都为真 2 print(any([1,2,3,4,5,0]))#判断可迭代对象里的值是否有一个为真 3 print(bin(10))#10进制转2进制 4 print(hex(10))#10进制转成16进制 5 print(oct(10))#10进制转成8进制 6 print(chr(33))#数字对应的ascii码 7 print(ord('v'))#字符对应的ascii码 8 #python3 默认的字符集是utf-8 9 #python2 默认的字符集是ASCII 10 f = open('a.txt','w') 11 print(dir(f))#打印传入对象的可调用方法 12 print(locals())#返回局部变量 13 def fun(): 14 name = 'abc' 15 age = 18 16 print(locals()) # 返回局部变量,返回的是一个字典 17 fun() 18 19 print(globals())#返回全局变量,返回的是一个字典
3、递归
函数自己调用自己,就是递归
递归最大的次数是999次,如果执行次数超过最大次数就会报错
1 #函数自己调用自己,就是递归 2 #递归最大的次数是999次 3 4 count = 1 5 def xiake(): 6 global count 7 print(count) 8 count += 1 9 print('下课') 10 xiake() 11 #xiake() 12 13 #1、递归时:全局变量会一直占着内存,所以递归时能不用全局变量就不用全局变量 14 #2、递归没有循环的效率高
4、变量
4.1 局部变量
在函数里定义的变量都是局部变量(没有加globals修饰)
作用域在函数里,出了函数就失败了
1 name = 'caimingchang' 2 def fun(): 3 name = 'cai' 4 print('name1',name) 5 6 fun() 7 print('name2',name)
4.2 全局变量
一般写在代码最上面,作用域是全局的,大家都可以用
如果定义在函数里,要加globals修饰,而且要执行函数时,才会定义
1 fun() 2 print('name2',name) 3 4 5 def test(): 6 global a 7 a = 5 8 9 def test1(): 10 c = a + 5 11 return c 12 13 res = test1() 14 print(res)
这段代码执行会报错,因为全局变量a没有被定义
4.3 常量
常量也是一种变量,是一种不会变得变量,一般用全部大写来定义
1 IP = '192.168.1.13' 2 print(IP)