函数对象和函数嵌套
函数对象
python中有一句话,万物皆对象,之前讲的int、float都是对象,函数也是对象,他们都是一个类(class)
x = 2
y = 1.4
string = 'hades'
def func():
pass
print(type(x))
print(type(y))
print(type(string))
print(type(func))
<class 'int'>
<class 'float'>
<class 'str'>
<class 'function'>
函数的四大功能
引用
def f1():
return 4
f = f1
print(f())
4
当作参数传给一个函数
def f1():
print('from f1')
def f2(func):
func()
f2(f1)
from f1
当作函数的返回值
def f1():
print('from f1')
def f2():
return f1
f = f2()
f()
from f1
作为容器函数的元素
def f1():
print('from f1')
func_list = [f1]
func_list[0]()
from f1
函数的嵌套
函数嵌套的定义
函数内部定义的函数,无法在函数外部使用
def f2():
def f1():
print('from f2')
f1()
f1() # NameError: name 'f1' is not defined
现在有一个需求,需要在一个函数里实现求圆的周长和面积,可以自主选择功能
from math import pi
def circle(radius,action='area'):
def area():
return pi*radius**2
def perimeter():
return 2*pi*radius
if action != 'area':
return perimeter()
return area()
s = circle(10,'area')
c = circle(10,'perimeter')
print(s,c)
314.1592653589793 62.83185307179586