函数的嵌套
函数嵌套
一、函数的嵌套定义
函数内部定义的函数,无法在函数外部使用内部定义的函数
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