04-函数的嵌套

函数的嵌套

函数的嵌套调用

def my_max(x,y):
    rst = x if x >y else y
    return rst
def cal_4_num(a,b,c,d):
    rst1 = my_max(a,b)
    rst2 = my_max(c,d)
    rst3 = my_max(rst1,rst2)
    return rst3
print(cal_4_num(1,2100,4,6))

函数的嵌套定义

def f1():
    x = 1
    print("---------",x)
    def f2():
        print("------>",x)
        def f3():
            print("---->",x)
        f3()
    f2()
f1()

结果:
--------- 1
------> 1
----> 1

函数是第一类对象的概念(函数可以被当做数据来传递,简单来说变量咋用函数就能咋用)

函数可以被赋值:
def f1():
    print("f1")
f2 = f1
print(f1,f2)

结果:
<function f1 at 0x000000193DB47048> <function f1 at 0x000000193DB47048>

把函数当成参数传递
def f1():
    print("f1")

def f2(func):
    print(func)

f2(f1)
f2(f1())

结果:
<function f1 at 0x00000093B5F47048>
f1
None

从上面的例子就可以看到f1这个函数可以像变量一样的被传递,f2(f1),其实就是给f2传递f1的这个参数,结果会把f1的内存地址打印出来。对于f2(f1()),f1()也就是调用f1这个函数,把返回值作为参数传给f2。调用f1,结果会print一个f1,因为f1()被调用了,但是f1()只有一个print并没有return返回值,因此传过去的func就是None,打印出来也是None。

posted @ 2017-08-09 15:21  雨下不停  阅读(123)  评论(0)    收藏  举报