如何优雅地忽略Python函数的某些返回值?

Pas*_*ten 10 python return-value

有时函数会给出一个您只想丢弃的返回值,而不是发送到输出流.处理这个问题的优雅方法是什么?

请注意,我们正在讨论的函数会返回一些您无法更改的函数.

def fn():
    return 5
Run Code Online (Sandbox Code Playgroud)

我个人以前使用null过,但我正在寻找一种更加pythonic的方式:

null = fn()
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 19

显示此标准的标准方法是分配您不想要的结果_.例如,如果函数返回两个值但您只想要第一个,请执行以下操作:

value, _ = myfunction(param)
Run Code Online (Sandbox Code Playgroud)

大多数Python短信将识别使用_而不是抱怨未使用的变量.

如果你想忽略所有的回报,那么就不要分配任何东西; Python不会对结果做任何事情,除非你告诉它.打印结果只是Python shell中的一项功能.


Dav*_*ein 8

我真的很喜欢分配给null的想法 - 但它确实有一个意想不到的副作用:

>>> print divmod(5, 3)
(1, 2)
>>> x, null = divmod(5, 3)
>>> print null
2
Run Code Online (Sandbox Code Playgroud)

对于那些主要使用Python编码的人来说,这可能不是问题:null应该与_一样多的垃圾值.

但是,如果您在其他语言(如Javascript)之间切换,则完全有可能意外地使用null而不是None编写比较.而不是吐出与未知变量进行比较的常见错误,Python会默默地接受它,现在你得到的是你完全不期望的真假条件......这就是你盯着看的那种错误一个小时的代码,无法弄清楚是不是错,直到它突然袭击你,你觉得自己像个白痴.

明显的修复也不起作用:

>>> x, None = divmod(5, 3)
File "<stdin>", line 1
SyntaxError: cannot assign to None
Run Code Online (Sandbox Code Playgroud)

......这真的令人失望.Python(以及地球上的所有其他语言)允许隐式丢弃所有参数,无论返回多少变量:

>>> divmod(5, 3)
Run Code Online (Sandbox Code Playgroud)

...但是不允许通过将参数分配给None来明确地丢弃参数?

感觉有点愚蠢的Python解释器来表征作为语法错误分配给None,而不是有明确结果的有意选择.任何人都可以想到这个的理由吗?