Python第四天(函数高级)

作者: 我是周先生 | 来源:发表于2017-10-26 17:07 被阅读0次
    • python闭包:
       def inner(b):
           nonlocal a
           a+=b
           return a
       print(a)
       return inner
    result_fn=outer(1)(2)
    print(result_fn)
    
    • 装饰器:
      所谓的装饰器,就是不改变原来的函数,再对原函数进行其他的输出操作
      定义一个原函数的装饰函数也就是装饰器
      def zhuang(zz):# 这个函数的参数就代表原函数参数名的意思
      这里的一个函数代表原函数的意思,如果传参数也就是原函数的参数
           print('我是1之前打印的')
           zz()
           print('我是1之后打印的')
           # return foo
       return foo
    @zhuang
    # 定义一个原函数:
    def foo():
       print('我是原函数:1')
    foo()
    上面定义的是没有参数的装饰器,下面定义一个带参数的装饰器:
    on=False
    def zhuang_1(zz):
       global on
       if on:
           def foo(a,b):
               num=zz(a,b)
               a=num**2
               return a
           return foo
       else:
           return zz
    # 定义原函数:
    @zhuang_1
    def yhs(a,b):
       return a+b
    print(yhs(1,9))
    
    两个装饰器修饰:
    def foo(y):
       def yuan():
           print('我是装饰函数1')
           y()
           print('我是装饰函数1')
               # return yuan
       return yuan
    def zhuang(yy):
       def zz():
           print('我是外层装饰函数先显示我')
           yy()
           print('我是下面的外层函数最后执行我')
       return zz
    
    
    @foo
    @zhuang
    def yuanhanshu():
       print('我就是被修饰的原函数')
    
    yuanhanshu()
    
    • 迭代器:迭代的含义就是遍历python语法中没有for 循环的等值语句而,for in 语法的内部调用的就是迭代器;
    # a=range(10,100)
    # for x in a:# 因为python本身没有for循环,底层用的是迭代器
    #     print(x)
    # 获取迭代器对象就是iter(里面是字符串容器)
    it=iter(a)
    # print(it)
    # 通过迭代器 :迭代器只有一次取一个值直到把容器中中的值取完,报错的时候就停止迭代,不断调用迭代器
    v=next(it)
    
    • 生成器:
      自己对迭代器的理解:
      所谓的跌迭代器就是for in底层调用实现的东西,而学迭代器底层实现的原理的目的就是希望自己
      能够创造出跌代器,能够实现自己想实现迭代而系统迭代器所不能实现的遍历
    a='hel'
    # for i in a:
    #     print(i)
    it=iter(a)
    # print(it)# 此时生成的是迭代对象
    # 然后调用next函数来实现层次遍历
    # print(next(it))
    def foo(n):
        for i in range(1,n):
            yield i
    # print (foo(5))
    g=(x+2 for x in foo(10) if x>2 and x%2==0 )# 跌代器的用来生产迭代对象的
    print(g)
    num=next(g)
    print (num)
    num=next(g)
    print (num)
    

    相关文章

      网友评论

        本文标题:Python第四天(函数高级)

        本文链接:https://www.haomeiwen.com/subject/ropkpxtx.html