• 函数进阶二


    函数名:

    1、直接打印函数名,打印的是函数名内存地址

    def func():
        pass
    print(func)
    #输出:<function func at 0x00000021BB452E18>

    2、函数名可以赋值给其他变量

    def func():
        print(666)
    f = func
    f()
    # def
    #输出:666

    3、函数名可以当作容器类的元素

    def func1():
        print(11)
    def func2():
        print(22)
    def func3():
        print(33)
    li = [func1(),func2(),func3()]
    #输出:11    22    33

    4、函数名可以当作函数的参数

    def func1():
        print(111)
    def func2(a):           #执行函数,把func1传入。此时 a= func1
        a()                       # func1()
    func2(func1)      
    #输出:111

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

    def func2():
        print(222)
    def func3(x):             #2      x = func2
        return x              #3     返回 func2
    ret = func3(func2)        #1
    ret()                     #       ret = func2
    #输出:222

    闭包:

    内层函数对外层函数(非全局变量)的引用

    闭包用处:如果说,内层函数是闭包,python内部有个机制,遇到闭包会在内存中开辟哟个内存空间,不会关闭(不是全局变量,但不关闭)

    def func():
        a = 1
        def func2():
            print(a)           #这个a是在上层函数调用过来的
        func2()
    func()
    #输出:a

    闭包检测:

    def func():
        a = 1
        def func2():
            print(a)
        func2()
        print(func2.__closure__)   #检查是否是闭包,如果打印None就不是,如果打印的有cell,就是闭包
    func()                                                                

    如何执行函数内层的函数:

    ① 就在内部函数中先执行本函数

    ②返回函数内层函数名,再加()

    引用  import  time

    time.time()   19**年到现在的时间

    time.sleep(0.1)停顿      0.1 是秒

    装饰器:

    在不改变原函数基础上,给函数添加功能

  • 相关阅读:
    easyui datebox 年月 yyyyMM 格式
    input输入框输入中文时,监听的input事件 屏蔽拼音状态
    类路径文件读取方式
    Oracel 修改字段类型(有数据的情况)
    springboot(一)入门篇
    使用performance进行网页性能监控
    广告等第三方应用嵌入到web页面方案 之 使用iframe嵌入
    vue调试工具vue-devtools安装及使用
    vue-roter2 路由传参
    vue2.0实现分页组件
  • 原文地址:https://www.cnblogs.com/pygg/p/8406835.html
Copyright © 2020-2023  润新知