上QQ阅读APP看书,第一时间看更新
2.1.6 命名切片
在Python程序中,有时会发现编写的代码变得杂乱无章而无法阅读,到处都是硬编码的切片索引,此时需要将它们清理干净。如果代码中存在过多硬编码的索引值,将会降低代码的可读性和可维护性。很多开发者都会有这样的经验,几年以后回过头看自己以前编写的代码,会发现自己当初编写这些代码是多么幼稚而不合理。
在Python程序中,使用函数slice()可以实现切片对象,能够在切片操作函数中实现参数传递功能,可以被用在任何允许进行切片操作的地方。使用函数slice()的语法格式如下所示。
class slice(stop) class slice(start, stop[, step])
· start:起始位置。
· stop:结束位置。
· step:间距。
下面的实例文件qie.py演示了使用函数slice()实现切片操作的过程。
源码路径:daima\第2章\qie.py
items = [0, 1, 2, 3, 4, 5, 6] a = slice(2, 4) print(items[2:4]) print(items[a]) items[a] = [10, 11] print(items) print(a.start) print(a.stop) print(a.step) s = 'HelloWorld' ①print(a.indices(len(s))) for i in range(*a.indices(len(s))): print(s[i])
在上述代码中,slice对象实例s可以分别通过属性s.start、s.stop和s.step来获取该对象的信息。在①处使用indices(size)函数将切片映射到特定大小的序列上,这将会返回一个(start, stop, step)元组,所有的值都已经正好限制在边界以内,这样当进行索引操作时可以避免出现IndexError异常。执行结果如图2-9所示。
图2-9 执行结果