所以我写了一个函数,它接受一个可选的列表,并将其扩展到指定的长度,而不是写为foo(n,list=None),我想知道如何模拟Python的range函数的行为,其工作原理如下:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5, 10)
[5, 6, 7, 8, 9]
也就是说,首先使用默认参数。作为参考,尝试简单地设置此参数会返回语法错误:
def foo(x=10, y):
return x + y
SyntaxError: non-default argument follows default argument
所以我想知道,这是硬编码到范围内的吗?或者这种行为可以被模拟吗?
5条答案
按热度按时间goqiplq21#
其他人已经展示了如何使用参数计数来实现它,但是如果我自己用Python实现它,我会更像这样做。
gfttwv5a2#
它们不是真实的的关键字参数。
如果要争论的话,那就是极限。
如果有两个参数,第一个是起始值,第二个是限制值。
如果有三个参数,第一个是起始值,第二个是限制,第三个是步幅。
wlwcrazw3#
用纯python编写
range
的一种方法是9lowa7mx4#
Python通过查看参数的数量来实现
range()
。编写这段代码的Python版本应该不会太难来自范围对象.c:
jw5wzhpr5#
考虑: