• 函数三


    一、函数

      函数名是函数的名字,本质:变量,特殊的变量。

    # 1,单独打印函数名  <function func1 at 0x0000000000872378>
    # def func1():
    #     print(666)
    # print(func1)  # <function func1 at 0x0000000000872378>
    # a = 6
    # print(a)

      函数名的赋值

    # def func2():
    #     print(666)
    #
    # f = func2
    # print(f())

      函数名可以作为容器类数据的元素

    # def f1():
    #     print(1211)
    #
    #
    # def f2():
    #     print(1222)
    #
    #
    # def f3():
    #     print(1233)
    #
    #
    # def f4():
    #     print(1233)
    
    '''
    f1()
    f2()
    f3()
    f4()
    '''
    
    # l1 = [f1, f2, f3, f4]
    # for i in l1:
    #     i()
    
    # l1 = []
    # for i in range(1,5):
    #     l1.append('f'+str(i))
    # # print(l1)
    
    # for i in l1:
    #     eval(i)()

      函数名可以作为参数

    # a = 1
    # def f1(x):
    #     print(x)
    # f1(a)
    
    
    # def f1():
    #     print(666)
    #
    #
    # def f2(x):  # x = f1
    #     x()  # f1()
    #
    # f2(f1)

      函数名可以作为函数的返回值

    # def f11(x):
    #     return x
    #
    # ret = f11(5)  # 5
    # print(ret)
    
    
    
    # def f1():
    #     print(666)
    #
    #
    # def f2(x):  # x = f1
    #     return x
    #
    #
    # ret = f2(f1)  # f1
    # ret()
    
    
    # def wraaper():
    #     def inner():
    #         print(666)
    #     inner()
    # wraaper()
    
    
    def wraaper():
        def inner():
            print(666)
        return inner
    
    ret = wraaper()  # inner
    ret()  # inner()

    二、闭包

      闭包:就是内层函数对外层函数(非全局)变量的引用。

    # 如何判断  内层函数名.__closure__  cell 就是=闭包
    
    # def wraaper1():
    #     name = '老男孩'
    #     def inner():
    #         print(name)
    #     inner()
    #     print(inner.__closure__)  # cell
    
    # wraaper1()
    
    
    # name = '老男孩'
    # def wraaper2():
    #     name1 = 'alex'
    #     def inner():
    #         print(name)
    #         print(name1)
    #     inner()
    #     print(inner.__closure__)  
    # wraaper2()
    
    #面试题 闭包
    # name = '老男孩'
    # def wraaper2(n):
    #     #  n = '老男孩' 相当于
    #     def inner():
    #         print(n)
    #     inner()
    #     print(inner.__closure__)  
    # wraaper2(name)
    
    # 闭包:当函数开始执行时,如果遇到了闭包,他有一个机制,
    # 他会永远开辟一个内存空间,将必包中的变量等值放入其中,不会随着函数的执行完毕而消失。

    三、装饰器

    def wapper(func)
        def inner(*args,**kwargs)
           ####装饰器前#####
            ret = func(*args,**kwargs)
            ####装饰器后#####
            return ret
        return inner
  • 相关阅读:
    Socket Client & Server
    2台整机,多线程运行测试时间不稳定
    去了一趟宝马铁西工厂,才知道工厂已经在数字孪生
    窗帘电机测试系统调试心得
    AntDesignBlazor 学习笔记
    简单粗暴的实现 Blazor Server 登录鉴权
    Blazor 子组件与父组件通过 ChildEvents 传递数据的方法
    EasyExcel 列 固定下拉选项的做法
    Java代码在数据库存取某些敏感字段的加解密做法
    nacos 使用【一】 创建一个属于自己的配置空间
  • 原文地址:https://www.cnblogs.com/qiujie/p/8686954.html
Copyright © 2020-2023  润新知