为什么在函数参数中使用元组约定?

Mup*_*pet 5 python coding-style numpy

我想知道为什么许多函数 - 特别是在 numpy 中 - 使用元组作为函数参数?

例如:

a = numpy.ones( (10, 5) )
Run Code Online (Sandbox Code Playgroud)

那可能有什么用?为什么不简单地使用如下内容,因为显然第一个参数将始终表示数组的大小?

a = numpy.ones(10, 5)
Run Code Online (Sandbox Code Playgroud)

是因为可能有额外的参数,比如 dtype?即使是这样,

a = numpy.ones(10, 5, dtype=numpy.int)
Run Code Online (Sandbox Code Playgroud)

对我来说似乎比使用复杂的元组约定要干净得多。

感谢您的回复

YXD*_*YXD 5

因为你希望能够做到:

a = numpy.ones(other_array.shape)
Run Code Online (Sandbox Code Playgroud)

并且other_array.shape是一个元组。有一些功能与此不一致并且按照您的描述工作,例如numpy.random.rand()

  • 如果“np.ones”采用可变数量的参数,“np.ones(*other.shape)”会工作得很好,所以这不是全部。 (2认同)
  • np.ones(*other.shape) 不适用于采用多个参数的函数。显式传递单个参数允许该函数将相同的参数传递给其他函数。 (2认同)