zoukankan      html  css  js  c++  java
  • 函数名 闭包 迭代器

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

    可以被引用

    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循环
  • 相关阅读:
    Median Value
    237. Delete Node in a Linked List
    206. Reverse Linked List
    160. Intersection of Two Linked Lists
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted Lists
    477. Total Hamming Distance
    421. Maximum XOR of Two Numbers in an Array
    397. Integer Replacement
    318. Maximum Product of Word Lengths
  • 原文地址:https://www.cnblogs.com/y122988/p/9454702.html
Copyright © 2011-2022 走看看