API设计:点计数和点计数的独立参数(单位)或一个实数/复数参数

2024-09-27 09:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设计一组Python函数(数字信号处理工具,如滤波器、频谱图等),它们通常至少包含一个参数,这些参数可以用真实数据点的数量表示,也可以用某些(例如时间轴)单位的值表示。我看到三个选项如何提供一种方便的方式(主要用于交互式IPython使用)来指定目标数量:

选项1:标准值和单位值的独立参数

例如,我可以用标准方式将临界截止频率指定为f_c=0.2,它通常与奈奎斯特频率相关,或者我可以用f_c_s=1500指定它,例如,以采样频率单位kHz表示的1500 kHz。或者在给定窗口长度时,我可以给出n_window=1000n_window_s=1,以时间轴为单位是1ms

  • 优点:参数名称给出了所用内容的清晰指示(假设名称差异足够大)
  • 缺点:函数签名变得更长,必须处理冲突的参数,用户必须记住额外的参数名

选项2:一个参数表示值,第二个参数表示类型

与选项1类似,但只有一个值参数和一个值类型参数。例如,如果in_nyq=False(将自动确定),则f_c=1500将以kHz为单位,如果in_nyq=True,则相对于f洎nyq。对于点,将有一个额外的参数in_points=True/False

  • 优点:易于记忆,参数和签名是明确的
  • 缺点:签名中有额外的参数,如选项1所示

选项3:使用实数/复数来区分单位

只有一个函数参数,但是f_c=0.2是相对于Nyquist的,f_c=1500j是采样频率单位。或者n_window=1000是1000品脱,n_window=1j是1毫秒

  • 优点:易于记忆,交互使用非常方便
  • 缺点:数学上不干净,可能需要转换和检查管道中传递的值

你推荐哪种选择?你能看出其他的优点/缺点吗?或者其他选择


Tags: 函数in名称参数数量选项方式单位

热门问题