函数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
相关推荐
沐晓时光6 小时前
C语言入门,内存函数知识讲解
c语言·开发语言
用户9562562542910 小时前
跟做:Firecrawl 单页转 Markdown 再丢进沙箱总结
python·api
威哥爱编程10 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
威哥爱编程10 小时前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos
2601_9679801110 小时前
Python行情API量化 02:顺序拉 20 要 2 秒?并发批量把时间压到 0.5 秒
python·api·限流·并发·量化
伞伞悦读10 小时前
【第81期】特征缩放怎么选:标准化、MinMax 与 Robust 的原理、泄漏对照和完整实验
人工智能·python·深度学习·机器学习
新*11 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
David猪大卫12 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
卷无止境13 小时前
mathmodel-figure-templates 以及两个上手案例
后端·python
fengci.13 小时前
CTF2MISC中等部分
开发语言·前端·学习