匿名函数和常见是内置函数(配合匿名使用)和for循环的原理,异常的捕获

  • 匿名函数
  • 常见的内置函数(配合匿名函数使用)
  • 可迭代对象
  • 迭代器对象
  • for循环内部原理
  • 异常捕获

匿名函数

匿名函数不需要显示地定义函数名,使用【lambda + 参数 +表达式】的方式 lambda [arg1 [,arg2, ... argN]] : expression

常见的内置函数(配合匿名函数使用)

# map() 会根据提供的函数对指定序列做映射。l1 = [1, 2, 3,4,5,6]res=map(lambda a:a*2,l1)print(list(res))
#zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。利用 * 号操作符,可以将元组解压为列表。l1 = [1, 2, 3,4,5,6]l2=[1,2,3,4,5,56,7]res=zip(l1,l2)print(list(res))l1 = [1, 2, 3,4,5,6]l2=[1,2,3,4,5,56,7]res=zip(*zip(l1,l2))print(list(res))
#max() 方法返回给定参数的最大值,参数可以为序列。l1 = [1, 2, 3,4,5,6]res=max(l1)print(res)d = {    'kevin': 1000,    'jerry': 30000,    'Tank': 200000,    'Oscar': 100}print(max(d,key=lambda x:d[x]))
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表过滤出1~100中平方根是整数的数:import mathdef is_sqr(x):    return math.sqrt(x) % 1 == 0newlist = filter(is_sqr, range(1, 101))print(list(newlist))

可迭代对象

迭代:更新换代,每一次的更新都是基于上一次的结果可迭代对象:内置有__iter__方法的都可以称之为是可迭代对象    '内置': 直接可以使用点出来的    """    __iter__方法的读法    后面会有_开头的方法,这种方式也是有特殊含义的,大家最后先不要使用    """"""可迭代对象:    str、list、dict、set、tuple、文件类型以上基本数据类型都是可迭代对象"""'''可迭代对象调用__iter__方法之后就是迭代器对象了'''__iter__开头的方法都有一个与之对应的简写:iter(s) 方法名()i = 123f = 1.11s = 'hello'l = [1, 2, 3, 4]t = (1, 2, 3, 4)se = {1, 2, 3, 4}d = {'a':1, 'b':2}b = True# i.__iter# f.__ites.__iter__()l.__iter__()t.__iter__()se.__iter__()d.__iter__()# b.__iterfile = open('a.txt', 'w')file.__iter__()
'''可迭代对象调用__iter__方法之后就是迭代器对象了'''print(s.__iter__()) # print(iter(s))def iter(s):    return s.__iter__()print(len(s))print(s.__len__())def len(s):    return s.__len__()"""__iter__开头的方法都有一个与之对应的简写:iter(s) 方法名()"""

迭代器对象

迭代器:内置有__iter__方法还内置有__next__方法    如何转为迭代器对象有可迭代对象调用__iter__()方法转为迭代器对象
l = [1, 2, 3, 4]print(l.__iter__().__next__()) # 1print(l.__iter__().__next__()) # 1print(l.__iter__().__next__()) # 1print(l.__iter__().__next__()) # 1res = l.__iter__()print(res.__next__())  # 1print(res.__next__())  # 2print(res.__next__())  # 3print(res.__next__())  # 4

for循环内部原理

for循环内部的原理:1. 首先把关键字in后面的可迭代对象转为迭代器对象2. while循环取值__next__迭代取值,当next取值完毕的时候会报错3. 当内部报错的时候,for循环进行了异常捕捉

异常捕获

捕捉异常可以使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。
try:    正常的操作   ......................except:    发生异常,执行这块代码   ......................else:    如果没有异常执行这块代码            try:    正常的操作   ......................except(Exception1[,Exception2[,...ExceptionN]]):   发生以上多个异常中的一个,执行这块代码   ......................else:    如果没有异常执行这块代码
try-finally 语句无论是否发生异常都将执行最后的代码。try:    fh = open("testfile", "w")    fh.write("这是一个测试文件,用于测试异常!!")finally:    print( 没有找到文件或读取文件失败")'''try:    正常的操作   ......................except ExceptionType, Argument:    你可以在这输出 Argument 的值...'''l=[1,2,3,4,5]res= l.__iter__()while True:    try:        print(res.__next__())    except Exception:        break