Python 为什么numpy.arange函数的start参数实际上决定stop?

Python 为什么numpy.arange函数的start参数实际上决定stop?,python,numpy,Python,Numpy,我正在阅读文档,想自己尝试一些东西。(numpy版本1.14.5) 这是我的密码: print(np.arange(start=5)) 我不确定我的期望是什么,但肯定不是这样: [0 1 2 3 4] 我应该如何阅读文档和函数签名,以便了解这里发生了什么?显然start这里是0,stop是5,但是这是如何工作的呢?请注意,我是Python的初学者,所以这可能是因为我缺乏关于方法的可选参数的知识 np.arange既需要启动也需要停止。如果您只提供一个参数,它将被解释为stop,start将默

我正在阅读文档,想自己尝试一些东西。(numpy版本1.14.5)

这是我的密码:

print(np.arange(start=5))
我不确定我的期望是什么,但肯定不是这样:

[0 1 2 3 4]

我应该如何阅读文档和函数签名,以便了解这里发生了什么?显然
start
这里是
0
stop
5
,但是这是如何工作的呢?请注意,我是Python的初学者,所以这可能是因为我缺乏关于方法的可选参数的知识

np.arange
既需要
启动
也需要
停止
。如果您只提供一个参数,它将被解释为
stop
start
将默认为
0
。这就是这里发生的事情

可能的用途是:

np.arange(stop) # assumes start=0, step=1
np.arange(start, stop) # assumes step=1
np.arange(start, stop, step)

np.arange(start)
没有意义,因为没有“有意义的默认”数字来停止

np.arange
既需要
启动
也需要
停止
。如果您只提供一个参数,它将被解释为
stop
start
将默认为
0
。这就是这里发生的事情

可能的用途是:

np.arange(stop) # assumes start=0, step=1
np.arange(start, stop) # assumes step=1
np.arange(start, stop, step)

np.arange(start)
没有意义,因为没有“有意义的默认”数字来停止

numpy.arange
的签名记录为
numpy.arange([start,]stop,[step,]dtype=None)
,表示
start
step
是可选的,如果提供了一个位置参数,它将被视为
stop
。。。但在实现中,它更像

def arange(start, stop=None, step=None, dtype=None):
    ...
我之所以说“更像”,是因为它是用C写的,实际上看起来不像,但它的工作原理基本上是这样的


如果
arange
接收到一个位置参数,它会将其视为停止值,但仍会将其作为
start
参数接收。为了处理这个问题,
arange
被编码,如果它收到
start
并且没有
stop
步骤
,它将把
start
作为停止值。不幸的是,当它通过关键字接收到
start
时,这仍然适用,导致您陷入混乱的境地。

numpy.arange
的签名记录为
numpy.arange([start,]stop,[step,]dtype=None)
,表明
start
step
是可选的,如果提供了一个位置参数,它将被视为
stop
。。。但在实现中,它更像

def arange(start, stop=None, step=None, dtype=None):
    ...
我之所以说“更像”,是因为它是用C写的,实际上看起来不像,但它的工作原理基本上是这样的



如果
arange
接收到一个位置参数,它会将其视为停止值,但仍会将其作为
start
参数接收。为了处理这个问题,
arange
被编码,如果它收到
start
并且没有
stop
步骤
,它将把
start
作为停止值。不幸的是,当它接收到
start
by关键字时,这仍然适用,这导致了您所处的混乱局面。

当我尝试
foo=5
而不是
start=5
时,我得到
类型错误:必需的参数“start”(位置1)找不到
?另外,
stop=5
将导致
TypeError:Required argument'start'(pos 1)找不到
,这非常令人困惑。您需要阅读python如何处理位置参数,这不是C…感谢您的努力,但我不确定您的答案是否对我有帮助。不过谢谢。为什么当我尝试
foo=5
而不是
start=5
时,我得到了
TypeError:Required参数“start”(pos 1)没有找到
?而且
stop=5
会导致
TypeError:Required参数“start”(pos 1)找不到
,这非常令人困惑。您需要了解python如何处理位置参数,这不是C。感谢您的努力,但我不确定您的答案是否对我有帮助。谢谢。但是为什么
foo=5
会导致
TypeError:找不到必需的参数“start”(位置1)
?@KorayTugay:因为您没有提供
start
值,而且
start
是必需的。因此,如果我只能通过查看文档来猜测结果会是什么,那么我认为
TypeError
start=5
之间会出现
TypeError
是一个合理的期望值。但是为什么
foo=5
会导致
TypeError:找不到必需的参数“start”(位置1)
?@KorayTugay:因为您没有提供
start
值,而且
start
是必需的。因此,如果我只能通过查看文档来猜测结果会是什么,那么我认为
type error
start=5
之间出现
TypeError
就不会大错特错了。@KorayTugay:从文档来看,一个
TypeError
是一个合理的期望。
arange
在某种程度上是,与Python的
range
等效的
numpy<代码>范围
不接受关键字参数,只接受1-3个位置参数
arange
不是探索可选参数使用的好函数。
arange
在某种程度上是Python的
numpy
等价物
range
<代码>范围
不接受关键字参数,只接受1-3个位置参数
arange
不是探索可选参数使用的好函数。