欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

day13内置函数

程序员文章站 2022-04-04 08:00:58
一、三元表达式 三元表达式仅应用于: 1、条件成立返回一个值 2、条件不成立返回一个值 res=x if x > y else y print(res) 二、函数递归 定义:函数的递归调用,即在函数调用的过程中,又直接或间接地调用了函数本身 1、直接调用 2、间接调用 递归分为两个阶段 1、回溯: ......

一、三元表达式

1 def max2(x,y):
2     if x>y:
3         return x
4     else:
5         return y
6 res=max2(10,11)
7 print(res)

  三元表达式仅应用于:

   1、条件成立返回一个值

   2、条件不成立返回一个值

  res=x if x > y else y

  print(res)

1 def max2(x,y):
2     return x if x > y else y
3 print(max2(10,11))

二、函数递归

定义:函数的递归调用,即在函数调用的过程中,又直接或间接地调用了函数本身

1、直接调用

1 def foo():
2     print('from foo')
3     foo()
4 foo()

2、间接调用

1 def bar():
2     print('from bar')
3     foo()
4 
5 def foo():
6     print('from foo')
7     bar()
8 foo()

递归分为两个阶段

1、回溯:

  注意:一定要在满足某种条件回溯,否则无限递归

2、递推

总结:

1、递归一定要有一个明确的结束条件;

2、每进入下一次递归,问题的规模都应该相应减少;

3、在python中没有尾递归优化;

1 def age(n):
2     if n == 1:
3         return 18
4     return age(n-1)+2 #age(1)+2+2+2+2
5 
6 print(age(5))

例:items=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,]]]]]]]]]],利用递归取出嵌套列表内10。

1 items=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,]]]]]]]]]]
2 def tell(l):
3     for item in l:
4         if type(item) is not list:
5             print(item)
6         else:
7             tell(item)
8 print(tell(items))

三、匿名函数

1 def foo(x,n): #foo=函数的内存地址
2     return x ** n
3 
4 f=lambda x,n:x ** n
5 print(f(2,3))

强调:

  1、匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的;

  2、匿名函数的参数规则、作用域关系与有名函数是一样的;

  3、匿名函数的函数体通常应该是一个表达式,该表达式必须要有一个返回值;

 

lambda x,y:x+y

lambad匿名函数的应用:

#max,min,sorted,map,filter

 

 1 info=[
 2     {'name':'egon','age':'18','salary':'3000'},
 3     {'name':'wxx','age':'28','salary':'1000'},
 4     {'name':'lxx','age':'38','salary':'2000'}
 5 ]
 6 # 计算出最大值
 7 res=max(info,key=lambda dic:int(dic['salary']))
 8 
 9 # 计算出最小值
10 res=min(info,key=lambda dic:int(dic['salary']))
11 
12 # 进行排序
13 res=sorted(info,key=lambda dic:int(dic['salary']))
14 
15 # 为真则生成新的列表
16 res=map(lambda x:x**2,[1,2,3,4])
17 
18 # 找出大于2的数字
19 res=filter(lambda x:x > 2,[1,2,3,4])
20 
21 
22 
23 print(list(res))

 

四、内置函数

 1 print(abs(-1))
 2 print(all([1,'a',True])) # 列表中所有元素的布尔值为真,最终结果才为真
 3 print(all('')) # 传给all的可迭代对象如果为空,最终结果为真
 4 
 5 print(any([0,'',None,False])) #列表中所有元素的布尔值只要有一个为真,最终结果就为真
 6 print(any([])) # 传给any的可迭代对象如果为空,最终结果为假
 7 
 8 print(bin(11)) #十进制转二进制
 9 print(oct(11)) #十进制转八进制
10 print(hex(11)) #十进制转十六进制
11 
12 print(bool(0)) #0,None,空的布尔值为假
13 
14 res='你好egon'.encode('utf-8') # unicode按照utf-8进行编码,得到的结果为bytes类型
15 res=bytes('你好egon',encoding='utf-8') # 同上
16 print(res)
17 
18 def func():
19     pass
20 print(callable('aaaa'.strip)) #判断某个对象是否是可以调用的,可调用指的是可以加括号执行某个功能
21 
22 print(chr(90)) #按照ascii码表将十进制数字转成字符
23 print(ord('Z')) #按照ascii码表将字符转成十进制数字
24 
25 
26 print(dir('abc')) # 查看某个对象下可以用通过点调用到哪些方法
27 
28 print(divmod(1311,25)) # 1311 25
29 
30 # 将字符内的表达式拿出运行一下,并拿到该表达式的执行结果
31 res=eval('2*3')
32 res=eval('[1,2,3,4]')
33 res=eval('{"name":"egon","age":18}')
34 print(res,type(res))
35 # 
36 with open('db.txt','r',encoding='utf-8') as f:
37     s=f.read()
38     dic=eval(s)
39     print(dic,type(dic))
40     print(dic['egon'])
41 
42 
43 s={1,2,3}
44 s.add(4)
45 print(s)
46 
47 # 不可变集合
48 fset=frozenset({1,2,3})
49 
50 x=111111111111111111111111111111111111111111111111111111111111111111111111111111111111
51 print(globals()) # 查看全局作用域中的名字与值的绑定关系
52 print(dir(globals()['__builtins__']))
53 def func():
54     x=1
55     print(locals())
56 func()
57 print(globals())
58 
59 # 字典的key必须是不可变类型
60 dic={[1,2,3]:'a'}
61 # 不可hash的类型list,dict,set==  可变的类型
62 # 可hash的类型int,float,str,tuple ==  不可变的类型
63 hash()
64 
65 def func():
66     """
67     帮助信息
68     :return:
69     """
70     pass
71 
72 print(help(max))
73 
74 
75 len({'x':1,'y':2}) #{'x':1,'y':2}.__len__()
76 
77 obj=iter('egon') #'egon'.__iter__()
78 print(next(obj)) #obj.__next__()