内置函数与迭代对象

今日内容总结

  • 重要内置函数

  • 常见内置函数

  • 可迭代对象

  • 迭代器对象

  • for循环的本质

  • 异常捕获/处理

    重要内置函数

    zip
    zip() 函数用于将可迭代的对象作为参数,主要功能是将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
    
    如果各个iterable迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
    
    要点:打包成元组,返回列表,如果长度不一致,则与短的iterable对齐 
    

    zip.png

    filter
    filter函数是Python中常用的内置函数,调用无需加载库,直接使用即可。它主要用来根据特定条件过滤迭代器中不符合条件的元素,返回一个惰性计算的filter对象或迭代器。需要用list函数进行转换,才能得到符合的条件元素组成的新列表。
    
    其基本调用语法如下:
    
    filter(function or None, iterable)
    function:函数,作用是对iterable中的每个元素判断是否符合特定条件。
    None:不调用任何函数,只对可迭代对象中的元素本身判断真假,保留为真的元素。
    iterables:可迭代对象(序列、字典等)。
    
    '''
    从结果知,filter函数的作用是挑选出了序列c中大于0的元素组成了新的对象或迭代器。通过list函数进行转换,进而得到符合条件的元素组成的新列表。如果有朋友对代码中的lambda函数不熟悉,可以参考【Python常用函数】一文让你彻底掌握Python中的lambda函数。
    '''
    

    filter.png

    sorted
    
    对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比。在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的。
    主要的区别在于,list.sort()是对已经存在的列表进行操作,进而可以改变进行操作的列表。而内建函数sorted返回的是一个新的list,而不是在原来的基础上进行的操作.
    
    '''
    即默认升序
    '''
    

    常见内置函数

    1.abs()  绝对值
    print(abs(-100))
    print(abs(100))
    2.all()  所有数据值对应的布尔值为True结果才是True 否则返回False
    print(all([0, 1, 2, 3]))
    print(all([1, 2, 3, True]))
    3.any()  所有数据值对应的布尔值有一个为True结果就是True 否则返回False
    print(any([0, None, '', 1]))
    print(any([0, None, '']))
    4.bin() oct() hex() int()
    5.bytes()  转换成bytes类型
    s1 = '今天周五 内容也很简单'
    print(s1.encode('utf8'))
    print(bytes(s1, 'utf8'))
    6.callable()  判断名字是否可以加括号调用
    name = 'jason'
    def index():
        print('from index')
    print(callable(name))  # False
    print(callable(index))  # True
    7.chr() ord()  基于ASCII码表做数字与字母的转换
    print(chr(65))  # A
    print(ord('A'))  # 65
    8.dir()  返回括号内对象能够调用的名字
    print(dir('hello'))
    9.divmod()  元组 第一个数据为整除数 第二个是余数
    res = divmod(100, 2)
    print(res)  # (50, 0)
    res = divmod(100, 3)
    print(res)
    """
    总数据     每页展示的数据     总页码
    100         10              10
    99          10              10
    101         10              11
    """
    page_num, more = divmod(9999, 20)
    print(divmod(99, 10))  # (9, 9)
    if more:
       page_num += 1
    print('总页码为:', page_num)  # 总页码为: 500
    10.enumerate()  枚举
    11.eval() exec()  能够识别字符串中的python并执行
    s1 = 'print("哈哈哈")'
    eval(s1)
    exec(s1)
    s2 = 'for i in range(100):print(i)'
    eval(s2)  # 只能识别简单的python代码 具有逻辑性的都不行
    exec(s2)  # 可以识别具有一定逻辑性的python代码
    12.hash()  哈希加密
    print(hash('jason'))
    13.id() input() isinstance()
    14.map() max() min()
    15.open()
    16.pow()  幂指数(次方)
    print(pow(2, 2))
    print(pow(2, 3))
    print(pow(2, 4))
    17.range()
    18.round() 四舍五入
    print(round(98.3))
    print(round(98.6))
    19.sum()
    print(sum([11, 22, 33, 44, 55, 66]))
    20.zip()
    

    可迭代对象

    1.可迭代对象
       对象内置有_inter_方法的都成为可迭代对象
       '''
       1.内置方法 通过点的方式能够调用的方法
       2._inrer_ 双下liter方法
       '''
    2.可迭代对象的范围
         不是迭代对象
           int float bool 函数对象
         是迭代对象
          str list dict tuple set 文件对象
    3.可迭代的含义
           """
           迭代:更新换代(每次更新都必须依赖上一次的结果)
               比如:软件更新
           """
        可迭代在python中可以理解为是否支持for循环
    

    迭代器对象

    1.迭代器对象
       是由可迭代对象调用_iter_方法产生的
       迭代器对象判断的本质是否有_inter_和_next_
    2.迭代器对象的作用
       提供了一种不依赖于索引取值的方式
       正因为有迭代器的存在 我们的字典、集合才能够被for循环 (因为自带和集合是无序的)
    3.迭代器对象实操
     s1 = 'hello' #可迭代对象
     res = s1._inter_() #迭代器对象
    print(res._next_()) #迭代取值 for循环的本质
    一旦_next_取不到值 会直接报错
    4.注意事项
       可迭代对象调用_inter_会成为迭代器对象 迭代器对象如果还调用__iter__不会有任何变化 还是迭代器对象本身
     
    

    for循环的本质

    for 变量名 in 可迭代对象:
        循环体代码
    """
    1.先将in后面的数据调用_inter_转变成迭代器对象
    2.依次让迭代器对象调用_next_取值
    3.一旦_next_取不到值报错 for循环会自动捕获并处理
    """
    

    异常捕获/处理

    1.异常
        异常就是代码运行报错 行业俗语叫bug
    2.异常分类
        语法错误
            不允许出现 一旦出现立刻改正 否则提捅跑路
        逻辑错误
            允许出现 因为他一眼发现不了 代码运行之后才可能出现
    3.异常结构
       错误位置
       错误类型
       错误详细
    
posted @ 2022-10-14 20:27  jntmja  阅读(41)  评论(0)    收藏  举报