如何在Python中抑制函数输出

4

假设我有一个非常简单的函数:

def myFunction(arg1, arg2):
    return arg1, arg2

现在,如果我只想访问第二个参数,我可以这样做吗:
none, arg2 = myFunction(arg1, arg2)

?


@AswinMurugesh 有时可能也需要另一个参数,但有时不需要。 - usethedeathstar
2个回答

12

是的,你确实可以做到这样。实际上就是那样。

将要忽略的参数分配给一个名称,然后在任何其他地方都不使用它即可。通常使用名称_

_, arg2 = myFunction(arg1, arg2)

_ 这个变量名只是一种惯例,但大多数Python开发人员理解它的含义是“这个变量将被代码的其余部分忽略,它只是用来实现元组赋值的。”

或者,可以通过索引或切片输出:

arg2 = myFunction(arg1, arg2)[-1]

或者对于具有两个以上返回值的函数:

arg2, arg3 = returnsMoreThanTwo(arg1, arg2)[-2:]

但是如果你想忽略中间的某个参数,_ 赋值是最好的选择。你可以多次使用它而不会受到惩罚:

arg1, _, _, arg4 = returnsFourArguments(arg1, arg2)

1
或者省略中间很多东西... first_and_something = operator.itemgetter(0, 60),然后 first, something = first_and_something(returnsWhateverArguments(arg1, arg2)) 或者其他什么... - Jon Clements
@JonClements:在这种情况下,只需将输出分配给本地变量,然后挑选特定的索引会更易读一些。除非您需要对3个或更多不同的函数调用执行此操作。那么itemgetter()方法就可以使用了。:-P - Martijn Pieters

4
_, arg2 = myFunction(arg1, arg2)

4
谁踩了这个回答?这是一个有效且正确的答案。它与Martijn的答案相同,只是发表时间仅相差几秒钟。 - Joe
2
一个踩和一个删除的投票...哇 - Jon Clements
2
@Ellioh: 但它确实解释了为什么可以使用 _。并不是说我投票给了你的帖子... - Martijn Pieters
4
这可能是不点赞的原因,但在我看来并不是合理的反对理由。 - Joe
3
我点赞了。其实,我只在“Python”问题中看到过这种毫无意义的踩的频率。从未在“PostgreSQL”或“SQL Server”中看到过这样的情况。不知道是为什么。另一方面,对于点赞也是一样——曾经有一个回答关于如何将列表连接成字符串(例如 ' '.join(a)),得到了11个赞!要在“SQL Server”部分获得11个点赞,我必须创造出真正棒的东西 :) - Roman Pekar
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接