• python之第一对象,函数名的应用,闭包


    一、第一对象

      在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量、可以作为元素添加到集合对象中、可作为参数值传递给其它函数,

    还可以当做函数的返回值,这些特性就是第一类对象所特有的。

    
    
      对象的特性拥有:id、类型、和值。
      以函数为例子
    1 >>> id(func) 496835846 >>> type(funck) <class 'function'> >>>func<function foo at 0x103f45e68>
    2     

      函数拥有变量的特性也可以把函数看成是一个变量,同时也可以进行赋值操作

      1.函数名的应用

      

    def func():
        print(666)
    print(func)#直接打印函数名,得到的是函数的内存地址。<function func at 0x0000021A4F9612F0>

      2.函数名可以进行赋值运算

      

    def func():
        print(666)
    f=func
    f()

      3.函数名可以作为参数

     

    def func():
        print(666)
    
    def func1(x):
        x()
        print(999)
    func1(func)

      4.函数名可以作为容器类(列表、字典等)类型的元素

    def func1():
        print(111)
    
    def func2():
        print(222)
    
    def func3():
        print(333)
    
    # l=[func1,func2,func3]
    # for i in l:
    #     i()
    
    dic={1:func1,2:func2,3:func3}#创建字典时,变量不用加引号''
    for i in dic:
        dic[i]()

    ·  5.函数名的返回值

      

    def func1():
        print(333)
    
    def func2(x):
        print(666)
        return x
    func2(func1)()

    二、闭包 

       内层函数对外层函数非全局变量的引用叫作闭包。
      1.如何判断是不是闭包__closure__
        返回None不是闭包,返回call....是闭包
      2.闭包有什么用?
        当执行一个函数时,如果解释器判断一个函数内部有闭包存在,python 就有一个机制,
      此闭包所存在的临时命名空间不会随着函数的执行完毕而关闭.
    1 def func():
    2     a = 10
    3     def inner():
    4         print(a)
    5     print(inner.__closure__) # 如果打印的是None. 不是闭包. 如果不是None, 就是闭包
    6 
    7 func()

      
      






     

  • 相关阅读:
    Swift代码实现加载WEBVIEW
    android 图片压缩
    Android图片压缩(质量压缩和尺寸压缩)
    Android压缩图片到100K以下并保持不失真的高效方法
    android图片压缩的3种方法实例
    几种颜色模型的转换公式
    RGB HSV HLS三种色彩模式转换(C语言实现)
    由RGB到HSV颜色空间的理解
    BZOJ 1052 HAOI2007 覆盖问题 二分法答案+DFS
    插入排序算法
  • 原文地址:https://www.cnblogs.com/qq631243523/p/9455350.html
Copyright © 2020-2023  润新知