zoukankan      html  css  js  c++  java
  • 迭代器、生成器、闭包

    ***********************************************2018.01.10***********************************************************

    ————————————————迭代器———————————————————————

    什么是迭代器?

    可用next()函数调用的就是迭代器

    生成器一定是迭代器

    from collections import Iterable

    isinstance(对象,Iterable)判断一个对象是否具有可迭代性

    iter(对象)可将可迭代对象转换成迭代器

    ————————————————闭包———————————————————————

    闭包函数必须满足两个条件:1.函数内部定义的函数 2.包含对外部作用域而非全局作用域的引用

    外部函数返回内部函数的引用

    用例:创建多个方程式

    def test(a,b):
      def test_in(x):

        print(a*x+b)

      return test_in

    line1=test(1,1)#括号中的参数赋给a,b

    line2=test(1,2)

    line3=test(4,5)

    #调用line1,取一个坐标点

    line(10)#括号中的参数赋给x

    ————————————————装饰器——————————————————————

    在不改变原函数的基础上,让原函数实现另外的功能,就是装饰器

    装饰器:外部函数传入被装饰函数名,内部函数返回装饰函数名。

    特点:1.不修改被装饰函数的调用方式 2.不修改被装饰函数的源代码

    多重装饰器的顺序是由近到远

    想对多参数函数进行装饰,装饰器闭包内函数需要相同数量的参数。使用*args,**args

    def w1(func):
      def inner():
        func()

      return inner

    @w1#语法糖

    def  f1():

      print('****F1*****)

    def  f2():
      print('*****f2******)

  • 相关阅读:
    第四次作业——个人作业——软件案例分析
    作业五——团队项目——需求规格说明书
    团队项目——团队展示
    作业三——结对编程
    作业二——结对项目之需求分析与原型模型设计
    leetcode 212 单词搜索II
    leetcode 130. 被围绕的区域
    leetcode 695 Max Area of Island 岛的最大面积
    【《算法》学习笔记】一:
    leetcode 191 位1的个数
  • 原文地址:https://www.cnblogs.com/Jerry-zhao2110/p/8266682.html
Copyright © 2011-2022 走看看