内置函数、迭代器

今日内容概要

  • 重要内置函数
  • 常见内置函数
  • 可迭代对象
  • 迭代器对象
  • for循环的本质
  • 异常捕获/处理
  • 作业

重要内置函数

  1. zip()拉链赋值

    l1 = ["jason", "oscar", "kevin"]
    l2 = [111, 222, 333]
    res = zip(l1, l2)  # 两个参数都必须式可迭代对象
    print(res)
    # print(dict(res))  # {'jason': 111, 'oscar': 222, 'kevin': 333}
    print(list(res))  # [('jason', 111), ('oscar', 222), ('kevin', 333)]
    
  2. filter() 过滤

    # 过滤
    filter()    # 第一个参数可以是函数 也可以是None 第二个参数必须是可迭代对象
    l1 = [1, 2, 3, 4]
    res = filter(lambda a: a > 3, l1)  # 用函数写判断条件
    print(res)  # <filter object at 0x000002AFD96692B0>
    print(list(res))  # [4]  把处理好的数据放到 filter对象里 用list反解出来
    
  3. sorted() 排序 默认升序

    # 排序
    res = sorted({1, 3 , 4, 2, 4})  # 可以放可迭代对象
    print(res)  # [1, 2, 3, 4]
    res = sorted("hello")
    print(res)  # # ['e', 'h', 'l', 'l', 'o']
    

常见函数

  1. abs()绝对值

    abs()  # 绝对值
    res = abs(11)  # 只能传一个整型
    print(res)  # 11
    
  2. all() 只要一个值的布尔值位False则返回False

    all()  # 只要一个值为False则返回False
    print(all([1, 2]))
    print(all([1, 2, []]))  # False
    # 只能传可迭代对象 而且只能传一个参数如果可迭代对象里的布尔值一个为False则返回False
    
  3. any只要一个数据值为True则结果为True

    any()  # 只要有一个值为True则结果为True
    print(any([{}, 2, [], None])) # True
    # 只能传可迭代对象 而且只能传一个参数如果可迭代对象里的布尔值一个为True则返回True
    
  4. bin()二进制oct()八进制hex()

    l1 = 10
    print(bin(l1))  # 0b1010
    print(oct(l1))  # 0o12
    print(hex(l1))  # 0xa
    
  5. bytes()转换为bytes类型 第一个数据,第二个数据是编码格式

    bytes() # 转换为bytes类型 第一个数据, 第二个是编码格式
    res1 = bytes("哈哈哈", "utf8")  # b'\xe5\x93\x88\xe5\x93\x88\xe5\x93\x88'
    res2 = "哈哈哈".encode("utf8")  # b'\xe5\x93\x88\xe5\x93\x88\xe5\x93\x88'
    print(res1)
    print(res1.decode("utf8"))  # 哈哈哈  encode 的编码, decode 解码
    print(res2)
    
  6. callable() 判断 传的数据是否可以加括号调用

    callable()  # 判断名是否可以加括号调用
    name = 1
    print(callable(name))  # False
    
  7. chr() 基于ASCII码表做数字与字母的交换

    chr() # 基于ASCII码表做数字与字母的交换
    print(chr(120))  # x
    
  8. ord()基于ASCII码表做字母与数字的交换

    ord()  # 基于ASCII码表做字母与数字的交换
    print(ord("e"))  # 101
    
  9. dir() 返回括号内对象能够调用的名字

    dir()  # 返回括号内对象能够调用的名字
    name = 1
    print(dir(name))  # ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', 等等]
    
  10. divmod() 第一个参数是被除数 第二个是除数

    divmod()  # 第一个参数是被除数 第二个是除数
    res = divmod(100, 10)
    print(res)  # (10, 0)  # 返回元组 第一个是商, 第二个是除数
    
  11. enumerate() 枚举 可以传一个可迭代对象

    enumerate()  # 枚举 可以传一个可迭代对象
    res = {i:k for i, k in enumerate("hello")}
    print(res)  # {0: 'h', 1: 'e', 2: 'l', 3: 'l', 4: 'o'}
    
  12. eval() 能够识别字符串中的python文件并执行能力不强具有逻辑性的都不行

    eval()  # 能够识别字符串中的python文件并执行能力不强具有逻辑性的都不行
    eval("print('哈哈哈')")  # 哈哈哈
    
  13. exec() 能够识别字符串中的python文件并执行 可以识别具有一定逻辑性的py代码

    exec()  # 能够识别字符串中的python文件并执行 可以识别具有一定逻辑性的py代码
    exec("for i in 'hello': print(i)")
    """
    h
    e
    l
    l
    o
    """
    
  14. hash() 哈希加密

    hash()  # 哈希加密
    l1 = "哈哈"
    print(hash(l1))  # 7118397836838384864
    
  15. id() 获取内存地址

    id()  # 获取内存地址
    name = 1
    print(id(name))  # 140716761945872
    
  16. input() 用户交互

    input()   # 用户交互
    res = input("请输入:")
    print(res)  # 收到
    
  17. isinstance() 第一个值数数据值 第二值是数据类型

    isinstance()  # 第一个值是数据 第二个值是数据类型
    name = "哈哈"
    print(isinstance(name, str))  # True
    
  18. map() # 映射 第一个值函数, 第二个值是可迭代对象

    map()  # 映射   第一个值是函数, 第二个值是可迭代对象
    l1 = [1, 2, 3, 4]
    res = map(lambda a: a + 1, l1)
    # 每在后面的可迭代对象取一个值就会放到前面的函数里加工
    print(list(res))  # [2, 3, 4, 5]
    
  19. min() 获取最小值 里面可以传任意的同一类型的数据

    min()  # 获取最小值 里面可以传任意的同一类型的数据
    res = min([1, 2, 3, 4])
    print(res)  # 1
    
  20. open() 打开文件

    f = open()  # 第一个值传路径 第二个值是打开文件的模式 第三个值是 编码格式
    
  21. pow() 第一个值是数, 第二个值是次方 幂指数

    pow()  # 第一个值是数, 第二个是次方 幂指数
    print(pow(3, 3))  # 27
    print(pow(3, 4))  # 81
    print(pow(3, 5))  # 243
    
  22. range() 会得到一个数字集,第一个参数是开始数字,第二个参数是结束位置,第三个参数是步长

    range()  # 第一个参数开始数字, 第二参数是结束位置, 第三个是步长
    res = range(1, 10, 2)
    print(list(res))  # [1, 3, 5, 7, 9]
    
  23. round() 四舍五入 只能传两个值第一个值是数据,第二个值是小数保留的位数

    res = round(1.5234, 2,)  # 只能传两个值第一个是数字真的数据值 第二个是 小数的保留位数
    print(res)  # 1.52
    
  24. sum()求和里面只能传值是纯数字的可迭代对象

    res = sum([1, 2, 3])
    print(res)  # 6
    
  25. zip()拉来你赋值

    zip()  # 拉链赋值
    l1 = ["jason", "kevin", "oscar"]
    l2 = [1, 2, 3]
    res_dict = dict(zip(l1, l2))  # 第一参数是迭代器 第二个参数 也是迭代器
    print(res_dict)  # {'jason': 1, 'kevin': 2, 'oscar': 3}
    

可迭代对象

  1. 可迭代对象

    对象内置有__iter__方法的都称为可迭代对象

    """
    1.内置方法  通过点的方式能过调用的方法
    2.__iter__ 双下iter方法
    """
    
  2. 可迭代对象的范围

    不是可迭代对象
     int float bool 函数对象
    是可迭代对象
    list dict set str tuple 文件
    
  3. 可迭代含义

    迭代:更新换代(每次更新都必须依赖上一次结果)

    eg:手机app更新

    可迭代对象在python中可以理解为是否支持for循环

迭代器对象

  1. 迭代器对象

    1. 内置方法既有iter和__next方法
    2. 可以由可迭代对象调用__iter__来产生
    
  2. 迭代器作用

    提供一种不依赖于索引去取值的方式

    正因为有迭代器的存在 我们的字典 集合才能过被for循环

  3. 迭代器对象实操

  4. 注意事项

    可迭代对象调用__iter__会成为迭代器对象 迭代器对象如果还调用__iter不会有任何变化 还是迭代器对象本身

    一旦__next__取不到值 会直接报错

for循环的本质

for 变量名 in 可迭代对象:
    循环体代码
"""
1. 会先把in 后面的数据调用__iter__变成迭代器
2.然后调用迭代器的__next__方法
3.当__next__空时会报错 for循环会捕获错误
"""

异常捕获/处理

  1. 什么是异常

    异常即一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

    一般情况下,在Python无法正常处理程序时发生一个异常。

    异常就是Python对象,表示一个错误

    当Python脚本发生异常时我们需要捕获错误处理它,否则程序会终止执行

  2. 异常分类

    1. 逻辑错误

      允许出现 因为它一眼发现不了 代码运行之后才可能出现。

    2. 语法错误

      不允许出现的因为它一眼发现不了 代码运行之后

  3. 异常结果

  4. 异常类型都有

posted @ 2022-10-14 21:25  可否  阅读(31)  评论(0)    收藏  举报