首页 > 解决方案 > 为什么 Python 中的 Range() 方法有一个可选参数,而它的第二个参数不是可选的?

问题描述

新手,据我所知,在可选参数之后不能有非可选参数,所以当我看到 range() 方法的文档时,我很困惑。这是怎么回事,我错过了什么吗?

它说 start 参数是可选的,默认为 1,但第二个参数 stop 是强制性的。

链接到 range() 函数:https ://docs.python.org/3/library/stdtypes.html

标签: pythonrange

解决方案


根据传递的参数范围的数量,行为会发生变化。

  • 如果传递了 1 个参数,它会将 start 视为隐式,将唯一的参数视为 stop 值。
  • 如果传递了 2 个参数,它会将第一个参数视为起始值,将第二个参数视为终止值。
  • 如果传递了 3 个参数,它将第一个参数作为起始值,第二个作为停止值,第三个作为步长。

下面是一个人为的、可能有问题的例子,说明如何实现这样的功能:

def myrange(arg1, arg2=None, arg3=None):
    if not arg2:
        return range(arg1)
    if not arg3:
        return range(arg2, arg1)
    return range(arg2, arg1, arg3)

推荐阅读