为什么#python不会为slice
这样的对象抛出异常?
>>> y = slice(10, 2, 5) # impossible condition
>>> y
slice(10, 2, 5)
>>> x = [1, 2, 3]
>>> x[y] # applying the slice on an iterable
[]
>>>
slice函数应该抛出异常,因为slice(start = 10,stop = 2,step = 5)是不可能的情况。如果您从索引10开始并大步迈进5,您将永远不会到达索引2。
但是,slice函数很乐意接受该条件并保持安静(即返回一个空的slice)。考虑到禅宗的python状态“错误永远都不能静默传递”,我很好奇为什么选择这种行为来实现slice
。
答案 0 :(得分:1)
如果结果为空的slice
,则您期望slice无效。但是,slice
的行为有所不同。调用slice
并且result
是切片对象时,可以定义条件。该文档说:
slice()返回一个切片对象,该对象用于对给定序列进行切片 索引。
因此,空片不被认为是例外情况,而是slice
对象为空的情况。