You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NumPy sin函数中*参数的作用及额外参数存在原因咨询

关于NumPy中sin函数参数里*的作用及广泛使用原因

先给出NumPy官方文档里sin函数的定义:

numpy.sin(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'sin'>

一、out=None后*的作用

这个单独的*是Python的语法特性,用来标记关键字-only参数的起始位置。意思是:*之后的所有参数,调用函数时必须通过指定参数名的方式传递,绝对不能用位置参数的形式传值。

举个实际的例子:

import numpy as np
# 正确调用:*后的where用关键字传递
result = np.sin(np.pi/2, out=np.empty(1), where=True)

而下面这种写法会直接报错:

# 错误:where是关键字-only参数,不能用位置传递
result = np.sin(np.pi/2, None, True)

二、NumPy大量使用这种参数的原因

  • 保障API向后兼容:NumPy的函数会持续迭代更新,经常需要添加新的可选参数。把新增参数放在*之后的关键字-only区域,老代码里用位置传参的调用方式不会被破坏——比如原来用户习惯np.sin(x, out=my_arr),后续新增where参数后,老代码不需要修改就能正常运行,不会因为参数位置变化而出错。
  • 减少参数误用:NumPy的通用函数(ufunc)通常有很多可选参数,功能细节复杂。强制这些参数用关键字传递,能让代码可读性更高,开发者一眼就能看出每个参数的作用,避免因为位置传参搞混参数含义(比如把casting和order的位置搞反)。
  • 遵循Python语言规范:Python 3正式引入了关键字-only参数的语法,这种设计被视为编写清晰、健壮API的最佳实践。NumPy跟进这个规范,让自身API更符合Python开发者的使用习惯,降低学习成本。

内容的提问来源于stack exchange,提问作者Basil Karol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:45:40