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的回收机制当存在的内存地址没有被变量指向了就会被清理。

猜你喜欢

转载自www.cnblogs.com/Be-your-own-hero/p/11296673.html