【问题标题】:How to suppress function output in python [duplicate]如何在python中抑制函数输出[重复]
【发布时间】:2013-12-15 17:50:11
【问题描述】:

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

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

现在如果我只想访问第二个参数,我可以这样做:

none, arg2 = myFunction(arg1, arg2)

?

【问题讨论】:

  • @AswinMurugesh 因为有时他可能也需要其他参数,但有时不需要

标签: python function python-2.7 arguments


【解决方案1】:

是的,是的,您可以这样做。确实如此。

将您要忽略的参数分配给您在其他任何地方都不会使用的名称。经常使用_ 名称:

_, arg2 = myFunction(arg1, arg2)

_ 名称只是一个约定,但大多数 Python 开发人员将其理解为“此变量将被其余代码忽略,它只是为了完成元组赋值”。

或者,索引或切片输出:

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

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

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

但是如果你想忽略中间某个地方的参数,_ 分配是最好的。您可以多次使用它而不会受到惩罚:

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

【讨论】:

  • 或者在中间遗漏了很多东西...first_and_something = operator.itemgetter(0, 60) 然后first, something = first_and_something(returnsWhateverArguments(arg1, arg2)) 或其他...
  • @JonClements:在这种情况下,只需将输出分配给本地,然后挑选出特定的索引会更具可读性。除非您需要为 3 个或更多不同的函数调用执行此操作。那么itemgetter() 方法是公平的游戏。 :-P
【解决方案2】:
_, arg2 = myFunction(arg1, arg2)

【讨论】:

  • 谁反对这个?这是一个有效的、正确的答案。它与 Martijn 的相同,但仅在几秒钟后发布。
  • 反对票和删除票...哇
  • @Ellioh:但它确实包含了对 为什么 _ 可以使用的解释。不是我对你的帖子投了票..
  • @MartijnPieters 这可能是不赞成的理由,但不是反对恕我直言的正当理由。
  • +1 来自我。实际上,我只在python 问题中看到过这种毫无意义的投票率。在postgresqlsql-server 中从未见过这样的事情。不知道为什么。 OTOH,它也适用于赞成票 - 一旦我回答了如何将列表加入字符串(如' '.join(a))并获得 11 个赞成票!!!为了在sql-server 部分获得 11 次投票,我必须创造一些非常酷的东西 :)
猜你喜欢
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
相关资源
最近更新 更多