zoukankan      html  css  js  c++  java
  • 函数复习

    带参装饰器?

      作用:关闭装饰器

    实例

    # 带参数的装饰器:(相当于开关)为了给装饰器传参
    # F=True#为True时就把装饰器给加上了
    F=False#为False时就把装饰器给去掉了
    def outer(flag):
        def wrapper(func):
            def inner(*args,**kwargs):
                if flag:
                    print('before')
                    ret=func(*args,**kwargs)
                    print('after')
                else:
                    ret = func(*args, **kwargs)
                return ret
            return inner
        return wrapper
    
    @outer(F)#@wrapper
    def hahaha():
        print('hahaha')
    
    @outer(F)
    def shuangwaiwai():
        print('shuangwaiwai')
    
    hahaha()
    shuangwaiwai()

    可迭代对象?

      可以被for循环的都是可迭代的,要想可迭代,内部必须有一个__iter__方法。

      有哪些:字符串、列表、元组、字典、集合

    迭代器

    必须拥有__iter__方法和__next__方法。 

    迭代器优点

      1 节省内存,同一时刻只出现一条数据,节省内存空间

      2 取值过程单向不可逆

    for循环,能遍历一个可迭代对象,他的内部到底进行了什么?

    • 将可迭代对象转化成迭代器。(可迭代对象.__iter__())
    • 内部使用__next__方法,一个一个取值。
    • 加了异常处理功能,取值到底后自动停止。

    用while循环模拟for循环:

    l = [1,2,3,4]
    l_iter = l.__iter__()
    while True:
        try:
            item = l_iter.__next__()
            print(item)
        except StopIteration:
            break

    将可迭代的转化成迭代器   迭代器 = 迭代器.__iter__()

    为什么使用迭代器:方便我们遍历可迭代对象中的元素,获取每一个元素

    判断迭代器,还是可迭代对象?

      print('__next__' in dir(s))

      应用模块 collections  

    from collections import Iterable 可迭代对象
    from collections import Iterator 迭代器
    print(isinstance('',Iterable)) 判断是否是可迭代对象
    print(isinstance('',Iterator)) 判断收费是迭代器

    生成器

    本质上是一个迭代器,

    内置函数

    python提供给你直接可以拿来使用的所有函数。

    dir() 查询内部方法

    enumertae:枚举,返回索引与值的元组
    zip:拉链函数,接收多个可迭代对象,将对象相同索引位置放在一个元组中,返回一个迭代器,返回迭代器中元素个数由最短的可迭代对象决定
    filter:过滤函数,接收一个函数和一个可迭代对象,生成一个迭代器.将可迭代对象的每一个元素带入函数中,如果返回结果为True,则把元素添加入迭代器中
    map:处理函数,接收一个函数和一个可迭代对象,生成一个迭代器,将可迭代对象的每一个元素带入函数中,把返回值添加入迭代器中
    callble:判断参数是不是可调用的
    dir:查看内置属性和方法的字符串
    super:根据__mro__属性去查找方法
    isinstance:判断一个对象是不是这个类实例化出来的
    iscubclass:判断一个类是不是另一个类的子类,也可以判断两个类是不是相同的类

  • 相关阅读:
    MD5验签同一字符串得到不同的MD5签名值可能问题之一
    Git本地仓库与远程github同步的时候提示fatal: remote origin already exists 错误解决办法
    SVN Error: Unreadable path encountered; access denied;
    2018年终个人总结
    ant编译无法依赖rt.jar
    ORA-00980: 同义词转换不再有效
    二叉树的深度和广度优先遍历
    Missing HTTP Strict-Transport-Security Header (HSTS) 解决
    单例模式
    sql 替换字段中部分内容
  • 原文地址:https://www.cnblogs.com/benson321/p/10059946.html
Copyright © 2011-2022 走看看