函数的嵌套

函数嵌套

一、函数的嵌套定义

函数内部定义的函数,无法在函数外部使用内部定义的函数

def f1():
    def f2():
        print('from f2')
    f2()

f2()   # NameError: name 'f2' is not defined
def f1():
    def f2():
        print('from f2')

    f2()


f1()

from f2

现在有一个需求,通过给一个函数传参即可求得某个圆的面积或者圆的周长。也就是说把一堆工具丢进工具箱内,之后想要获得某个工具,直接从工具箱中获取就行了

那么函数嵌套的意义在哪里呢,是为了当需要某个函数方法的时候,能够通过调用的方式来直接获取方法,避免了代码的重复,提高了编写代码的效率

from math import pi


def circle(radius, action):
    def area():
        return pi * (radius ** 2)

    def perimeter():
        return 2 * pi * radius

    if action == 'area':
        return area()
    else:
        return perimeter()


print(f"circle(10,'area'):{circle(10, 'area')}")
print(f"circle(10,action='perimeter':{circle(10, action='perimeter')}")

circle(10,'area'):314.1592653589793
circle(10,action='perimeter':62.83185307179586

二、函数的嵌套调用

我们可以使用函数名的方式来调用函数,在重复一遍无法在函数外部使用内部定义的函数

def max4(a, b, c, d):
    res1 = max2(a, b)
    res2 = max2(c, d)
    res = max2(res1, res2)
    return res


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

4

原文地址:https://www.cnblogs.com/Lin2396/p/11568235.html