函数return、参数、参数组、递归函数、高阶函数等小结

函数返回值

  1. 无return:返回None
  2. 有return:有一个返回值,返回object
  3. 有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'})

函数参数

  1. 形参:定义函数时的参数如x和y,不调用不占用内存;
  2. 实参:调用函数时传入的参数,如1和2;
python 复制代码
def fun_test04(x,y): #形参
    print(x)
    print(y)

fun_test04(1,2) #1和2为实参
  1. 关键参数:使用args=1这种形式;
  2. 位置参数:调用函数时直接传入参数,如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) #关键参数在前面不可以
  1. 默认参数:比如安装软件的默认路径。
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) #使用关键参数传参

函数参数组

  1. 参数组:元组、字典、以及多种组合,便于扩展、预留字段
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')

运行结果

递归函数

  1. 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))

高阶函数

  1. 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
相关推荐
天赐范式1 小时前
天赐范式第181天:让视图开始切换——PBFT视图切换与从safety到liveness的跨越
python·pbft·数字生命·天赐范式·动态运行时·拜占庭容错
sugarzhangnotes1 小时前
【无标题】
开发语言·人工智能·python
geovindu1 小时前
rust: Composite Pattern
开发语言·后端·设计模式·rust·组合模式
weixin_447195292 小时前
【无标题】
pytorch·python
迅猛龙办公室2 小时前
Python实现简单的人名对话
python
阿坨2 小时前
firestart:一行命令启动你的日常应用和网页
python·pypi·cli·click
老歌老听老掉牙2 小时前
麻花钻切屑形态演变的力学机制与临界条件分析
python·算法·钻头
周杰偷奶茶2 小时前
【Java】数组的定义和使用(附管理系统实战案例)
java·开发语言
happylifetree3 小时前
Python18(补充):练习
python