26 函数对象与嵌套

496次阅读
没有评论

共计 1428 个字符,预计需要花费 4 分钟才能阅读完成。

一. 函数在 Python 中是第一类对象

函数对象的四种用法

def func():     # func= 函数的内存地址
    print('from func')

1、可以被引用 (被赋值)

def bar():
    print('from bar')

f=bar
f()  # from bar

2、可以当做参数传入

def bar():
    print('from bar')

def wrapper(func): #func=bar
    func()         #bar()

wrapper(bar)       #from bar

3、可以当做函数的返回值

def bar():
    print('from bar')

def foo(func):  #func=bar
    return func #return 函数 bar 的内存地址

f=foo(bar)      #f = func = bar
f()             #bar()---> from bar

4、可以当做容器类型的元素

👻建一个列表, 将函数放进去
def get():
    print('from get')

def put():
    print('from put')

l=[get,put]

l[0]()  #---> get()---> from get
l[1]()  #---> put()---> from put
  • 模拟购物车示例
👻实现登入, 注册, 转账, 提现等功能
def login():
    print('login')

def register():
    print('register')

def tranfer():
    print('transfer')

def withdraw():
    print('withdraw')

func_dic={"1":[login," 登录 "],
    "2":[register," 注册 "],
    "3":[tranfer," 转账 "],
    "4":[withdraw," 提现 "]
}

while True:
    print("0 退出 ")
    for k in func_dic:
        print(k,func_dic[k][-1])
    choice=input(" 请输入操作编号: ").strip()
    if choice == "0":
        break

    if choice in func_dic:
        func_dic[choice][0]()
    else:
        print(" 输入的操作不存在 ")

二. 函数嵌套

1. 函数嵌套定义

  • 在函数内定义其他函数
def f1():
    print('from f1')
    def f2():
        print('from f2')
    f2()
f1()

👻计算圆的周长和面积
from math import pi         #导入 math 模块

def circle(radius,mode=0):
    def perimiter(radius):  #计算周长函数
        return 2 * pi * radius

    def area(radius):       #计算面积函数
        return pi * (radius ** 2)

    if mode == 0:           #选 0 则计算周长
        return perimiter(radius)
    elif mode == 1:         #选 1 则计算面积
        return area(radius)

res=circle(10,mode=1)       #传入半径 10 , 选择 1 
print(res)                  #314......

2. 函数嵌套调用

  • 在调用一个函数的过程中又调用其他函数的组合
👻比较两个值的大小
def max2(x,y):
    if x > y:
        return x
    else:
        return y

👻比较四个值的大小
def max4(a,b,c,d):
    res1=max2(a,b)
    res2=max2(res1,c)
    res3=max2(res2,d)
    return res3

res=max4(1,2,3,4)
print(res)  # 4
正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-16发表,共计1428字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)