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

    一. 函数名的应用

      1.可以互相赋值

      2.函数名就是变量

    def func():
        print("我是一个小小的函数")
    a = func
    print(a)
    func()
    a()
    func = 3
    print(func)

      3.可以作为容器的元素

    def func1():
    print("我是1")
    def func2():
    print("我是2")
    def func3():
    print("我是3")

    lst = [func1, func2, func3]
    for el in lst:
    el()

      4.可以作为返回值进行返回 

    def func():
    print("我是func")
    a = 10
    def inner():
    print("我是inner")
    return inner
    ret = func()
    print(ret)
    ret()

    5.可以作为参数传递给函数
    def my():
    print("我是my")
    def proxy(fn):
    print("在处理之前")
    fn()
    print("在处理之后")proxy(my)

    二.闭包(可以保护变量,还可以让变量常驻内存)
     在内部函数使用外部函数的变量.
            def outer():
                a = 10 # 很耗时
                def inner():
                    print(a)
                return inner
            outer()()这种很费时,每次都要加载内存
            ret = outer()
            ret()这种为常驻内存,不需要每次加载
    三. 迭代器
      _iter_() 可迭代对象,获取迭代器
      _next_()+_iter_ 运行迭代器
      特点:1.惰性机制 2.只能向下 3.节省内存
      for 循环的内部就是迭代器
      lst = [1,2,4]
      it = lst._iter_() 获取迭代器
      while 1:
        try:
           it._next_()
        except StopIteration:
          break

      Iterable: 可迭代的
      Iterator: 迭代器



  • 相关阅读:
    rsync介绍和配置自动同步
    haproxy 配置httpd和httpds负载均衡
    haproxy配置及使用
    lvs之搭建NAT模式的HTTPS负载集群
    lvs配置之DR模式
    lvs配置之NAT模式
    LVS集群
    lvs四种工作模式,负载调度的介绍
    zabbix页面介绍
    zabbix自定义监控进程、日志、mysql主从
  • 原文地址:https://www.cnblogs.com/nianshaoyouwei/p/9469885.html
Copyright © 2011-2022 走看看