ネストされた関数の閉鎖や関数オブジェクトと側面を使用します

関数オブジェクト

函数对象:指的是函数可以被当做’数据’来处理,具体可以分为四个方面的使用,如下;

1、可以赋值
f=func
print(f,func)
f()

2、可以当做函数当做参数传给另外一个函数
def foo(x): # x = func的内存地址
    # print(x)
    x()

foo(func) # foo(func的内存地址)

3、可以当做函数当做另外一个函数的返回值
def foo(x): # x=func的内存地址
    return x # return func的内存地址

res=foo(func) # foo(func的内存地址)
print(res) # res=func的内存地址

res()

4、可以当做容器类型的一个元素
l=[func,]
# print(l)
l[0]()

dic={'k1':func}
print(dic)
dic['k1']()

案例:

第二に、閉鎖機能

第三に、ネストされた関数

1、函数的嵌套调用:在调用一个函数的过程中又调用其他函数
def max2(x,y):
    if x > y:
        return x
    else:
        return y


def max4(a,b,c,d):
    # 第一步:比较a,b得到res1
    res1=max2(a,b)
    # 第二步:比较res1,c得到res2
    res2=max2(res1,c)
    # 第三步:比较res2,d得到res3
    res3=max2(res2,d)
    return res3

res=max4(1,2,3,4)
print(res)


2、函数的嵌套定义:在函数内定义其他函数
def f1():
    def f2():
        pass


案例:
 
求圆形的求周长:2*pi*radius
def circle(radius,action=0):
    from math import pi

    def perimiter(radius):
        return 2*pi*radius

求圆形的求面积:pi*(radius**2)
    def area(radius):
        return pi*(radius**2)

    if action == 0:
        return 2*pi*radius

    elif action == 1:
        return area(radius)

circle(33,action=0)

おすすめ

転載: www.cnblogs.com/200024mc/p/12535118.html