输入未使用的参数
Typing unused arguments
我有一个函数必须接受两个参数,例如:
def f(first_arg: int, unused_arg) -> int:
first_arg += 1
return first_arg
我想输入我的函数,unused_arg 的类型应该是什么?从 我猜 None
可以使用。
对于上下文,我使用的是 jax
中的 lax.scan
,它需要一个带有两个参数的函数,即使第二个参数未被使用。
您可以使用 Any
?
from typing import Any
def f(first_arg: int, unused_arg: Any) -> int:
...
文档 (https://jax.readthedocs.io/en/latest/_autosummary/jax.lax.scan.html) 给出 f
的类型为:
Callable[[~Carry, ~X], Tuple[~Carry, ~Y]]
所以如果我没有更具体的类型,我可能会用一个名为 X
的 TypeVar
来做:
from typing import TypeVar
X = TypeVar("X")
def f(first_arg: int, _second_arg: X) -> int:
...
使用 Any
可能会有问题,因为它掩盖了类型检查——对于您从未使用过的变量来说这无关紧要,但如果您的函数实现发生变化,您可能不会意识到 formerly-unused arg 没有被类型检查,而如果你使用 TypeVar
如果你做出任何没有得到该变量的 bound
支持的假设,你会得到错误。我什至尽量避免导入 Any
只是为了确保它不会在我不注意的情况下蔓延到任何地方。
请注意,根据文档,您的 f
似乎是 return 两个项目的元组;我不确定这对您的用例是否重要。
指示未使用参数的标准方法(至少由我使用的 linters 强制执行)是在其前面加上下划线,所以我会这样做而不是命名它 unused_arg
)。
我有一个函数必须接受两个参数,例如:
def f(first_arg: int, unused_arg) -> int:
first_arg += 1
return first_arg
我想输入我的函数,unused_arg 的类型应该是什么?从 None
可以使用。
对于上下文,我使用的是 jax
中的 lax.scan
,它需要一个带有两个参数的函数,即使第二个参数未被使用。
您可以使用 Any
?
from typing import Any
def f(first_arg: int, unused_arg: Any) -> int:
...
文档 (https://jax.readthedocs.io/en/latest/_autosummary/jax.lax.scan.html) 给出 f
的类型为:
Callable[[~Carry, ~X], Tuple[~Carry, ~Y]]
所以如果我没有更具体的类型,我可能会用一个名为 X
的 TypeVar
来做:
from typing import TypeVar
X = TypeVar("X")
def f(first_arg: int, _second_arg: X) -> int:
...
使用 Any
可能会有问题,因为它掩盖了类型检查——对于您从未使用过的变量来说这无关紧要,但如果您的函数实现发生变化,您可能不会意识到 formerly-unused arg 没有被类型检查,而如果你使用 TypeVar
如果你做出任何没有得到该变量的 bound
支持的假设,你会得到错误。我什至尽量避免导入 Any
只是为了确保它不会在我不注意的情况下蔓延到任何地方。
请注意,根据文档,您的 f
似乎是 return 两个项目的元组;我不确定这对您的用例是否重要。
指示未使用参数的标准方法(至少由我使用的 linters 强制执行)是在其前面加上下划线,所以我会这样做而不是命名它 unused_arg
)。