python - Python 的 range() 函数是重载的内置函数吗?
问题描述
我发现只有参数列表末尾的参数可以具有默认值,因为 VALUES 是按函数中的位置分配的,如下面的定义
def greeting(a,b=7):
pass
并不是
def greeting(a=4,b):
pass
我对内置range()
函数的疑问是我们可以按如下方式传递参数
range(start_value, stop_value, increment_value)
调用函数时并不需要所有参数,所以range()
函数是重载函数,还是定义中有默认参数?
解决方案
range
获取三个参数并检查参数计数然后返回生成的可迭代对象
如果您想做类似的事情,那么您应该用 then 替换所有参数,*args
然后执行以下操作
def range_(*args):
start = 0
end = 0
step = 0
# args is a list of arguments
if len(args) == 1:
end = args[0]
elif len(args) == 2:
start, end = args
elif len(args) == 3:
start, end, step = args
else:
print("the function gets maximum three arguments")
# calculating something with start, end, step
# and return result
PS如果你想用默认参数定义函数,那么默认参数应该在其他人之前定义
推荐阅读
- python - Django 频道:将表单数据传递给消费者
- react-native - iOS / React Native 上的字体问题
- sql - 如果节点存在且适合模式,T-SQL 从 XML 节点获取值
- python - 在脚本开始时清除/创建文件,否则追加
- php - Indexhibit 手动升级
- reactjs - 用反应钩子去抖动(几秒钟内只有一次触发功能)
- php - PHP正则表达式匹配字符串中的组
- testing - 如何使用多个问题执行 DNS 查找?
- assembly - 为什么 ld 在另一个函数中找到未定义的引用而不是具有引用的函数
- amazon-ec2 - kubeadm join 无法连接