函数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
相关推荐
H.莓飛5 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu1145 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
爱喝水的鱼丶6 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
小灰灰搞电子7 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
外收内放7 小时前
面向对象高级(实战案例)
开发语言·python·学习
专业程序开发源7 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
FPGA小迷弟8 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
卷无止境8 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python
fanruitian8 小时前
python else用法
开发语言·python
FRing038 小时前
JavaScript入门到精通二十六(变量提升、函数剩余参数、展开运算符、ES6箭头函数)
开发语言·前端·javascript·es6·箭头函数