zoukankan      html  css  js  c++  java
  • 函数对象与函数嵌套

    1、函数对象(可以把函数当成变量去用)
    精髓:可以把函数当成变量去用
    1、可以赋值
    2、可以当做函数当做参数传给另外一个函数
    3、可以当做函数当做另外一个函数的返回值
    4、可以当做容器类型的一个元素
    2、函数嵌套
    1、函数的嵌套调用:在调用一个函数的过程中又调用其他函数
    2、函数的嵌套定义:在函数内定义其他函数

    案例
    # 精髓:可以把函数当成变量去用
    # func=内存地址
    # def func():
    # print('from func')


    # 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']()


    # def login():
    #
    # print('登录功能')
    #
    #
    # def transfer():
    # print('转账功能')
    #
    #
    # def check_banlance():
    # print('查询余额')
    #
    # def withdraw():
    # print('提现')
    #
    #
    # def register():
    # print('注册')
    #
    # func_dic={
    # '0':(None,'退出'),
    # '1':(login,'登录'),
    # '2':(transfer,'转账'),
    # '3':(check_banlance,'查询余额'),
    # '4':(withdraw,'提现'),
    # '5':(register,'注册')
    # }
    #
    # while True:
    # for k in func_dic:
    # print(f'{k}---{func_dic[k][1]}')
    # choice = input('请输入命令编号:').strip()
    # if not choice.isdigit():
    # print('必须输入编号,傻叉')
    # continue
    # if choice == '0':
    # break
    # if choice in func_dic:
    # func_dic[choice][0]()
    # else:
    # print('输入的指令不存在')

    # 函数嵌套
    # 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)


    from math import pi

    def circle(radius,action=0):
    '''
    :param radius: 半径
    :param action: 0周长,面积
    :return:
    '''
    def perimiter(radius):
    return 2 * pi * radius
    def area(radius):
    return pi * (radius ** 2)
    if action==0:
    res = perimiter(radius)
    elif action==1:
    res = area(radius)
    return res
    res=circle(3)
    print(res)
     
  • 相关阅读:
    京东POP店铺使用京东物流,如何拦截订单
    京东POP店铺使用京东物流切仓操作方法
    京东评价系统更新190301
    京东考试题目答案,每次顺序都不一样,一气之下,全部复制出来,满分过
    win10 去掉资源管理器左侧的Creative Cloud Files
    java 截取字符串获取子字符串
    在jsp中如何用request中获取后台传来的数据?
    java 中怎样获取input的值
    获取${}中的值? 比如说var a=${date },无法取出date中的值
    ${}
  • 原文地址:https://www.cnblogs.com/h1227/p/12531465.html
Copyright © 2011-2022 走看看