zoukankan      html  css  js  c++  java
  • 函数进阶二

    函数名:

    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 是秒

    装饰器:

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

  • 相关阅读:
    Lexical Sign Sequence
    (UPCOJ暑期训练)Tally Counters
    (2019hdu多校第十场) Welcome Party
    (2019hdu多校第十场1003) Valentine's Day
    更新,线段树模板(支持相关基本操作)
    linux(deepin)下Clion的安装及环境配置
    2019牛客第7场——C(Governing sand)
    【数论】数论之旅:N!分解素因子及若干问题
    [二分]Kayaking Trip
    [数论之旅]数学定理
  • 原文地址:https://www.cnblogs.com/pygg/p/8406835.html
Copyright © 2011-2022 走看看