函数对象和函数嵌套

函数对象

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

转载于:https://www.cnblogs.com/Hades123/p/10997845.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值