python - 为什么 Python 中的 Range() 方法有一个可选参数,而它的第二个参数不是可选的?
问题描述
新手,据我所知,在可选参数之后不能有非可选参数,所以当我看到 range() 方法的文档时,我很困惑。这是怎么回事,我错过了什么吗?
它说 start 参数是可选的,默认为 1,但第二个参数 stop 是强制性的。
链接到 range() 函数:https ://docs.python.org/3/library/stdtypes.html
解决方案
根据传递的参数范围的数量,行为会发生变化。
- 如果传递了 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)
推荐阅读
- python - 在“?”之前具有部分字符串匹配或匹配的子集 pandas df 列 使用名称列表
- mysql - 带有双重条件的sql group by
- javascript - 为什么我的 .css 文件在构建 webpack.mix.js 时不会出现在公共目录中?
- woocommerce - 在 woocommerce 发票上显示 Dokan 销售费用百分比和金额
- go - 您如何在与 libp2p-go 的直接 p2p 连接中手动刷新写入?
- android - 找不到 org.koin:koin-core:2.2.2
- python - Estimator.predict() TypeError: 期望任何非张量类型,取而代之的是张量
- android - Gradle 与 git_describe 的 CMake 问题
- reactjs - 如何在所有不同的分辨率设备上实现 100% 的标注准确率?
- python - Pandas AttributeError:“str”对象没有属性“loc”