python的高阶函数和函数即变量

1:高阶函数

#高阶函数 定义:把函数作为参数作为另一个函数的参数
def test(a,b):
    return a*b
def test_1(f,c):
    return f*c
print(test_1(test(1,2),5))
运行结果:
10

2:函数即变量

def foo():
    print("in the foo")
    bar()
def bar():
    print("in the bar")
foo()
运行结果:
in the foo
in the bar
def bar():
    print("in the bar")
def foo():
        print("in the foo")
        bar()
foo()
运行结果:
in the foo
in the bar
def foo():
    print("in the foo")
    bar()
foo()
def bar():
    print("in the bar")

运行结果:
NameError:name bar is not defined

分析:

之所以会出现上面的结果,在定义foo函数的时候,在内容地址中把foo函数的函数体存在了内存当中,而foo相当于变量指向了那个内存地址,而在调用foo函数的时候,当执行到bar()函数的时候,bar函数这个变量还没有指向内存中的地址,所以才出现上面这种情况。

另外,一旦内存中的地址没有被变量指向了,就会被python的回收机制不定时的被清理掉,当然自己也可以用del 方向删除内存地址的指向(del只是删除的是内存地址的指向,并没有删除内存地址,内存地址是python的回收机制当存在的内存地址没有被变量指向了就会被清理。

 

转载于:https://www.cnblogs.com/Be-your-own-hero/p/11296673.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值