Python 元组拆包捡到 8 倍镜快准狠
本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 元组拆包 元组是不可变列表,列表是通过索引取值的,元组也是: tuple_test = (1, 2, 3) a = tuple_test[0] b = tuple_test[1] c = tuple_test[2] 但 Python 是出了名的一行代码解决问题,元组拆包就是精髓技术之一: a, b, c = tuple_test print("%s %s %s" % tuple_test) 把元组一一对应拆出来,就叫做元组拆包。拆包有个要求,元组中的元素数量必须跟接受这些元素的空挡数一致,否则会报错: tuple_test = (1, 2, 3) a, b = tuple_test # ValueError: too many values to unpack (expected 2) _占位符 使用_占位符可以解决这个问题: tuple_test = (1, 2, 3) a, b, _ = tuple_test 这样就只获取到部分数据了,这在取函数返回值时特别有用,比如: import os _, filename = os.path.split("/home/dongfanger/.ssh/idrsa.pub") print(filename) # "idrsa.pub" *前缀 当返回值特别多时,_占位符写起来麻烦,可以用*来处理剩下的元素: >>> a, b, *rest = range(5) >>> a, b, *rest (0, 1, [2, 3, 4]) 注意rest是个列表,如果没有足够元素,会返回空列表: >>> a, b, *rest = range(2) >>> a, b, *rest (0, 1, []) *前缀变量能放在任意位置,比如,放在中间: >>> a, *body, c, d = range(5) >>> a, body, c, d (0, [1, 2], 3, 4) 放在前面: ...