我怎样才能表示未使用的函数参数?
当“解构”一个元组时,我可以用_
来表示我不感兴趣的元组元素,例如
>>> a,_,_ = (1,2,3) >>> a 1
使用Python 2.x,我怎样才能expression与函数参数相同? 我试图使用下划线:
>>> def f(a,_,_): return a ... File "<stdin>", line 1 SyntaxError: duplicate argument '_' in function definition
我也试图完全忽略这个论点:
>>> def f(a,,): return a File "<stdin>", line 1 def f(a,,): return a ^ SyntaxError: invalid syntax
还有另外一种方法来实现吗?
以下是我用未使用的参数做的事情:
def f(a, *unused): return a
我刚才想到的一个有趣的方法是删除variables:
def f(foo, unused1, unused2, unused3): del unused1, unused2, unused3 return foo
这具有许多优点:
- 调用该函数时,仍然可以使用未使用的variables作为位置参数和关键字参数
- 如果你以后开始使用它,你不能删除它,所以减less错误的风险
- 这是标准的Python语法
- pycharm做正确的事情!
下划线用于我们不关心的事情,* in * args表示参数列表。 因此,我们可以使用* _来表示一个我们不关心的事情的列表:
def foo(bar, *_): return bar
它甚至通过了PyCharm的检查。
如果你有args和关键字arg,你应该使用
def f(a, *args, **kwargs): return a
我认为接受的答案是不好的,但是如果你使用我应该称之为“Perl方法”来处理参数的话,它仍然可以工作(我真的不知道Perl,但是在看到sub
语法之后我不再试图学习它,手动参数解包):
你的函数有3个参数 – 这就是它所调用的(鸭子键入,记得吗?)。 所以你得到:
def funfun(a, b, c): return b * 2
2个未使用的参数。 但是现在,进入改进的人文主义的方法:
def funfun(*args): return args[1] * 2
那里有警告
不过,我仍然喜欢更多的盒装方式:
def funfun(a, b, c): del a, c return b * 2
它保持参数名称的自我logging质量。 他们是一个function,而不是一个错误。
但是,语言本身并不强迫你 – 你也可以换个angular度,让所有的函数都有签名(*args, **kwargs)
,并且每次都手动进行参数parsing。 想象一下给你的控制水平。 在更改“签名”(参数数量和含义)后,不要以过时的方式调用exception。 这是值得考虑的事情;)