为什么导入了numpy模块后,计算结果发生了变化?

下面两段代码,结果运行不一样,想问下是什么原因?

print(sum(range(5),-1))

结果为 9

from numpy import *
print(sum(range(5),-1))

结果为 10

阅读 3.5k
2 个回答

python自带的sum函数签名如下:

sum(iterable, [start])

后一个参数指定的是初始化值,会加到结果中去。故结果是-1+1+2+3+4=9。

numpy中sum函数签名为:

numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>)

不使用命名参数,-1传给了axis,结果为10。如果要指定初始值,这样用sum(range(1,5), initial=-1)

可以看一下不一定正确,原始的sum 是对两个值进行求和,而numpy.sum()此时你的-1会作为axis参数传递

@array_function_dispatch(_sum_dispatcher)
def sum(a, axis=None, dtype=None, out=None, keepdims=np._NoValue,
        initial=np._NoValue, where=np._NoValue):
  • 测试代码
def hc(a, b=None, c=None):
    print("参数a",a)
    print("参数b",b)
    print("参数c",c)

    pass


hc(range(5),-1)

输出结果

参数a range(0, 5)
参数b -1
参数c None
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题