函数总结

面向对象编程:类class
面向过程编程:过程def
函数式编程:函数def

函数:
1 def func1():
2     'The function definition'
3     print('func1')
面向过程,没有返回值的函数:
 1 def func2():
 2     'The function definition'
 3     print('func2')
 4     return 0
 5 
 6 def func3():
 7     'The function definition'
 8     print('func3')
 9     return 1,['sada'],{'asd':'asda'}
10 
11 x=func1()#执行了函数并把返回值赋给x
12 y=func2()
13 z=func3()
14 
15 
16 print('from func1 return is ',x)#在python中过程被当作返回值为None的函数
17 print('from func1 return is ',y)
18 print('from func1 return is ',z)
19 
20 
21 print(func1())#执行了函数并显示返回值
22 print(func2())
23 print(func3())

结论:

  1. 当没有返回值时,返回None
  2. 当有一个返回值时,返回object
  3. 当有多个返回值时,返回tuple

运行结果:

参数:

 1 def funcp(x,y):#x,y形参
 2     print(x)
 3     print(y)
 4 
 5 x=1
 6 y=2
 7 
 8 funcp(y=y,x=x)#关键字调用
 9 funcp(3,4)#位置调用,一一对应
10 funcp(5,y=6)#关键字参数不能写在位置参数前,而且必须一一对应
11 
12 
13 #默认参数
14 def funcmp(x,y=2):
15     print(x)
16     print(y)
17 
18 funcmp(1,3)
19 #特点:调用参数时默认参数可有可无
20 
21 
22 #参数组*args:接收N个位置参数转换成元组,注意*args只接收位置参数
23 def funcnp(*args):
24     print(args)
25 
26 funcnp(1,2,3,4,5)
27 funcnp(*[1,2,3,4,5])#args=tuple([1,2,3,4,5])
28 
29 def funcmnp(x,*args):
30     print(x)
31     print(args)
32 
33 funcmnp(1,2,3,4,5)
34 
35 #参数组**kwargs:把N个关键字参数转换成字典,注意kwargs只接收关键字参数
36 def funcdict(**kwargs):
37     print(kwargs)
38     print(kwargs['name'])
39     print(kwargs['age'])
40 
41 
42 funcdict(name='Tao',age='23')
43 funcdict(**{'name':'Tao','age':'23'})
44 
45 
46 def funcmndict(name,age=23,*args,**kwargs):#参数组放在最后
47     print(name)
48     print(age)
49     print(args)
50     print(kwargs),
51 
52 funcmndict('Tao',sex='m',hoppy='Basketball',age=24)#默认参数赋值有两种方式,1位置参数2关键字参数
53 
54 def funcmndict(name,age=23,*args,**kwargs):#参数组放在最后
55     print(name)
56     print(age)
57     print(args)
58     print(kwargs)
59 #*args:接收N个位置参数转换成元组,注意*args只接收位置参数
60 #**kwargs:#把N个关键字参数转换成字典,注意**kwargs只接收关键字参数
61 funcmndict('Tao',1,2,3,4,sex='m',hoppy='Basketball')

函数内部调用函数:

 1 ef call(source):
 2     print('from ',source)
 3 
 4 def funccall(name,age=23,*args,**kwargs):#参数组放在最后
 5     print(name)
 6     print(age)
 7     print(args)
 8     print(kwargs)
 9     call('call')
10 funccall('Tao',1,2,3,4,sex='m',hoppy='Basketball')

递归:函数自己调用自己

特性:

  1. 必须有一个明确的结束条件
  2. 每次进入更深一层的递归时,问题规模相比上一次递归都应有所减少
  3. 递归效率不高
1 def calc(n):
2     print(n)
3     if int(n/2):
4         return calc(int(n/2))
5     print('-->',n)
6 calc(10)

高阶函数:函数接收另一个函数作为参数

 1 def add(a,b,f): 2 return f(a+b) 3 print(add(3,-6,abs)) 

原文地址:https://www.cnblogs.com/BIT-taozhen/p/9783295.html