• Python基础教程:函数名本质


    函数名的本质

    函数名实质上就是函数的内存地址

    def wrapper():
        pass
    
    print(wrapper)
    

    1.引用是什么?

    当我们定义a=1的时候,系统会开辟一块内存空间来保存1,然后用a变量名保存1所在的内存地址引用,变量名就好像C语言中的指针,大家可以把引用理解成地址,a里面存的是1这个数值所在的地址,a存了1的引用。

    当我们在代码中定义了一个函数,系统会分配一块内存空间,用于保存函数体的内部变量和函数名,这个wrapper只是一个变量名,保存了函数内存中的地址,我们可以x = wrapper,y = wrapper.这样的操作就相当于把wrapper中引用的地址,赋值给x,y ,这样x和y都指向了wrapper函数所在的引用,我们可以x()和y()来调用wrapper函数,调用实际上是一个函数,而x,y,wrapper三个变量存了同一个函数的地址。

    函数名保存的是函数的内存地址

    '''
    def func():
        print(1)
    
    print(func)
    #<function func at 0x000001AFABE2C8C8>
    

    函数名赋值给其他变量

    def func():
        print(1)
    
    x = func
    y = func
    x()
    y()
    

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

    def func():
        print(1)
    
    x = func
    y = func
    x()
    y()
    

    函数名可以当作其他函数的参数

    函数名保存的是函数在内存中的地址,f1 = f = f()内部的地址 -> f1()

    #Python学习交流群:531509025
    
    def f():
        print(123)
    
    def fun(f):
        f1 = f
        f1()
    
    fun(f)
    

    函数名可以当作其他函数的返回值

    def func():
        print(123)
    
    def fun(f):
        return f
    
    ret = fun(func)
    ret()
    
  • 相关阅读:
    php多态
    ssl certificate problem: self signed certificate in certificate chain
    test plugin
    open specific port on ubuntu
    junit vs testng
    jersey rest service
    toast master
    use curl to test java webservice
    update folder access
    elk
  • 原文地址:https://www.cnblogs.com/djdjdj123/p/14781488.html
Copyright © 2020-2023  润新知