目录
- 问题
- 解决方案
- 讨论
问题
代码的可阅读性非常重要,如何增强切片中的可阅读性?本文将提供一种方案。
解决方案
假设有一些代码用来从字符串的固定位置取出具体的数据:
record = "...100...513.25..."
cost = int(record[3:6]) * float(record[9:15])
print("cost is ", cost)
上述的代码可读性和可维护性很低,在一段时间后再回看这段代码,可能会发现自己都难理解这两个字段到底是什么。对于这种切片切分,不妨我们使用合理的命名,不仅便于后期维护,还可显著增加代码的可阅读性:
shares = slice(3, 6)
price = slice(9, 15)
cost = int(record[shares]) * float(record[price])
print("cost is ", cost)
讨论
slice()
函数,不仅可以用于上述增强代码的可阅读性,其本质上会创建一个切片对象,我们可以在对象的实例上进行很多其他的操作。
假设有一个 slice
对象的实例 s
,我们可以分别通过 s.start
,s.stop
以及 s.step
属性来得到关于该对象的信息,例如:
s = slice(3, 6, 2)
print("s.start =", s.start)
print("s.stop = ", s.stop)
print("s.step = ", s.step)
所以可以看出,slice
对象有三个参数,分别是 (start, stop, step)
,顾名思义,即开始的 index,结束的 index 以及每一步的跨步大小是多少 step。