函数返回值
- 无return:返回None
- 有return:有一个返回值,返回object
- 有return:大于一个返回值,返回tuple
python
def fun_test01():
print('in fun_test01')
#函数
def fun_test02():
print('in fun_test02')
return 0
def fun_test03():
print('in fun_test03')
return 1,'test',['lili','wuwu'],{'name':'gan'}
x=fun_test01()
y=fun_test02()
z=fun_test03()
print(x) #返回None
print(y) #返回0,类型object
print(z) #返回元组,打包成元组(1, 'test', ['lili', 'wuwu'], {'name': 'gan'})

函数参数
- 形参:定义函数时的参数如x和y,不调用不占用内存;
- 实参:调用函数时传入的参数,如1和2;
python
def fun_test04(x,y): #形参
print(x)
print(y)
fun_test04(1,2) #1和2为实参
- 关键参数:使用args=1这种形式;
- 位置参数:调用函数时直接传入参数,如1和2
python
def fun_sum(x,y):
sum=x+y
print(sum)
fun_sum(1,2) #位置参数传参
fun_sum(x=3,y=4) #使用关键参数传参
fun_sum(1,y=7) #位置参数在关键参数前面
# fun_sum(x=1,2) #关键参数在前面不可以
- 默认参数:比如安装软件的默认路径。
python
def fun_sum(x,y=1):
sum=x+y
print(sum)
fun_sum(1) #默认参数可以不传
fun_sum(1,2) #传默认参数,修改默认参数
fun_sum(x=3,y=4) #使用关键参数传参
函数参数组
- 参数组:元组、字典、以及多种组合,便于扩展、预留字段
python
#参数组,元组
def fun_test05(*args):
print(args)
fun_test05(1,2,3,4)
fun_test05([1,2,3,4],[12])
print('****')
#字典,把关键字参数转换为字典
def fun_test06(**kwargs):
print(kwargs)
fun_test06(name='test',age=18,sex='female')
print('****')
#多种参数组合
def fun_test07(name,age=18,*args,**kwargs):
print(name)
print(age)
print(args)
print(kwargs)
fun_test07('agan',19,3,4,'hhh',sex='test',hobby='dance')
运行结果

递归函数
- recursion function:
- 有结束条件
- 第二次递归比第一次递归计算规模小;
- 效率不高,需要占用栈内存
pyhton
#阶乘
def fun_test01(i):
if i==0 or i==1:
return 1
else:
return fun_test01(i-1)*i
print(fun_test01(5))
高阶函数
- Higher-order function:一个函数调用另一个函数作为参数
python
def square(x):
if x==0 or x==1:
return 1
else:
return x*x
def fun_test03(x,y,f): #f为函数
return f(x)+f(y)
print(fun_test03(3, 4, square)) #调用时传参包括x、y以及函数square