関数オブジェクト
函数对象:指的是函数可以被当做’数据’来处理,具体可以分为四个方面的使用,如下;
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)