检查是否有“等待”函数返回值的内容

时间:2012-02-27 02:41:48

标签: python

我想知道是否有人能想出一种方法来检查一个函数是否需要在Python中返回一个有意义的值。也就是说,检查返回值是否将用于任何。我猜测答案是否定的,重构我的程序流程会更好。有问题的函数从网络套接字中提取其返回值。如果不会使用返回值,我不想浪费获取结果的资源。

我已经尝试使用回溯来发现调用行,但这不起作用。这是我想到的一个例子:

>>> def func():
...  print should_return()
...
>>> func()
False
>>> ret = func()
True

函数“知道”正在分配其返回值。

以下是我目前的解决方法:

>>> def func(**kwargs):
...   should_return = kwargs.pop('_wait', False)
...   print should_return
...
>>> func()
False
>>> ret = func(_wait=True)
True

5 个答案:

答案 0 :(得分:5)

import this正文的第二行说明了一切:“明确胜过隐性”。在这种情况下,如果提供可选参数,代码将更加明显(因此更容易理解),更简单,更快速,更安全。将其作为单独的参数保留,其名称为wait

虽然有困难你可以神奇地实现它,但它会是令人讨厌的代码,容易在新版本的Python中破坏并且不明显。避开那条路线;它存在着疯狂的道路。

答案 1 :(得分:3)

所有函数在完成时都会返回一个值。

如果您问他们是否应该返回,那么您实际上是在询问The Halting Problem

答案 2 :(得分:1)

一种方法可能是使用__del__方法返回一个对象,该方法依赖于垃圾回收器在将来的某个时候删除未使用的值。 注意它不会立即发生。它甚至可能根本不会发生:)

答案 3 :(得分:0)

您可以考虑返回未来或“承诺”。也就是说,返回另一个函数,该函数在执行时执行必要的工作以实际确定结果。我似乎在想你想要懒惰的评估,即“只评估你需要的东西”(或多或少),而不是你的问题,这令人困惑地问道:“只有当它返回一个可能需要的值时才进行评估”。

答案 4 :(得分:-1)

Python中的所有函数总是返回。如果没有显式返回,则函数返回None。

===========

def func():     而真:         通

此功能不会返回。

无法确定是否会返回任意函数。如果可以的话,你已经解决了图灵问题。