Python之递归函数、函数作用域以及匿名函数——第八天

1、递归函数定义
自己调用自己的函数,例子如下:

def calc(n):
    print(n)
    if int(n/2)==0:
        return n
    res=calc(int(n/2))
    return res

res=calc(10)

#输出结果:
10
5
2
1

2、递归特性
(1)必须有一个明确的结束条件
(2)每进入一层递归,问题规模相比上次递归都应该有所减少
(3)递归效率不高,递归层次过多容易造成内存溢出(在计算机中,函数调用是通过栈这种数据结构实现的,每当执行一次函数调用,就会增加一层栈帧,每返回一次函数,就会减少一层栈帧,由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

3、打印函数名会出现内存地址

def test():
    pass
print(test)


#输出结果:
<function test at 0x02D0B6A0>

4、将函数名赋值,并打印,就相当于执行

name = "123"
def test():
   return name
p = test()
print(p)

#输出结果:
123

5、匿名函数
(1)匿名函数的定义:
lambda 函数形参:函数的功能表达式(相当于return),对比普通函数,举例如下:

需求:给变量后追加一个字符串

#匿名函数

name="alex"
p = lambda x:x+"_add"
print(p(name))

#输出结果:
alex_add
#普通函数

name="alex"
def test(x):
    return name+"_add"
print(test(name))

#输出结果:
alex_add

(2)可以有多个参数,python3的表达式不加括号也没有报错,不过最好还是加括号,看起来清晰些

#正常加()的

p = lambda x,y,z:(x+y+z)
print(p(1,2,3))

#输出结果:6

注意:

  • 匿名函数的主体只能是一行简单表达式,不能扩展成一个多行的代码块。
  • 先赋值再运行,和函数不太一样,必须将匿名函数赋值给一个变量才可以执行,如果不赋值就相当于只定义,但是没有名字,类比房间没有房间号,不可以被调用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值