通过反复试验,我发现了这一点
my_list = range(10)
my_list[:None] == my_list[:]
Run Code Online (Sandbox Code Playgroud)
我将它用于django查询集,所以我可以定义一个大小或全部:
some_queryset[:length if length else None]
# @IanAuld
some_queryset[:length or None]
# @Bakuriu
# length works for all numbers and None if you want all elements
# does not work with False of any other False values
some_queryset[:length]
Run Code Online (Sandbox Code Playgroud)
None切片时使用这个好习惯吗? 你的方式很好,但我更喜欢:
some_queryset[:length] if length else some_queryset
Run Code Online (Sandbox Code Playgroud)
要么
some_queryset[:length] if length else some_queryset[:]
Run Code Online (Sandbox Code Playgroud)
它们是可读的,对切片如何处理这些特殊情况知之甚少.
应该是安全的。在 Python 中,something[<sliceexpr>]相当于something[slice(...)],并且该slice类型的文档明确指出 stop 和 step 的参数默认为None。