• 函数名 闭包 迭代器


    函数名的本质就是函数的内存地址

    可以被引用

    def func():
        print("我是函数")
    f = func
    print(f)
    >>>>>>>
    <function func at 0x00000000023BE2F0>
    # 打印的是这个函数的函数地址
    函数的引用

    可以被当作容器类型的元素

    def f():
        print("f")
    def f1():
        print("f1")
    def f2():
        print("f2")
    lis = [f,f1,f2]
    lis[0]() # 相当于调用f()函数
    >>>>>>>
    f
    d = {"f1":f1,"f2":f2}
    d["f1"]()  # 相当于调用f1函数
    >>>>>
    f1
    可以被当做容器类里的元素

    可以当做函数的参数跟返回值

    def f():
        print("我是谁?")
    def proxey(fun):
        fun()
        print("猜猜我又是谁")
        return fun
    ret = proxey(f) #  先执行proxer函数 并且把 f 函数名当做参数传递进去 
                    # 此时执行func()函数相当于执行 f 函数 打印 执行完毕后
                    # 执行第二个print 并且 把fun 当做返回值返回给 ret 执行ret
                    #  打印 我是谁
    ret()
    >>>>>>>>>>>>>>>
    我是谁?
    猜猜我又是谁
    我是谁?
    函数名可以当做参数返回值传递

    大白话就是 函数的使用跟变量名的使用方法一样

    闭包

    定义:内部函数包含对外部作用域而非全局作用域变量的引用,该内部函数成为闭包.

    作用:让一个变量常驻内存,供以后的程序使用.

    def func():
        a = 10
        def inner():
            print(a)
        return inner
    func()()
    >>>>>>
    10
    闭包
    from urllib.request import urlopen
    def but():
     content = urlopen("http://www.xiaohua100.cn/index.html").read()
     def get_content():
     return content
     return get_content
    fn = but() # 这个时候就开始加载校花100的内容
    # 后⾯需要⽤到这⾥⾯的内容就不需要在执⾏⾮常耗时的⽹络连接操作了
    content = fn() # 获取内容
    print(content)
    content2 = fn() # 重新获取内容
    print(content2)
    示例

    迭代器

    迭代器的特点:
    1. 节省内存.
    2. 惰性机制
    3. 不能反复, 只能向下执行.

    li = [1, 2, 3, 4, 9, 10]
    ret = li.__iter__()   # 获取 迭代器
    while 1:
        try:
            el = ret.__next__()
            print(el)
        except StopIteration:
            break
    用while 循环模拟for循环
  • 相关阅读:
    Windows10 ntoskrnl.exe占用大量的磁盘空间(100%)
    Windows10 正式企业版激活
    edit-distance
    climbing-stairs
    minimum-path-sum
    unique-paths-II
    unique-paths
    剑指 Offer 42. 连续子数组的最大和
    剑指 Offer 54. 二叉搜索树的第k大节点
    矩阵中的路径
  • 原文地址:https://www.cnblogs.com/y122988/p/9454702.html
Copyright © 2020-2023  润新知