我想知道是否有人能想出一种方法来检查一个函数是否需要在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
答案 0 :(得分:5)
import this
正文的第二行说明了一切:“明确胜过隐性”。在这种情况下,如果提供可选参数,代码将更加明显(因此更容易理解),更简单,更快速,更安全。将其作为单独的参数保留,其名称为wait
。
虽然有困难你可以神奇地实现它,但它会是令人讨厌的代码,容易在新版本的Python中破坏并且不明显。避开那条路线;它存在着疯狂的道路。
答案 1 :(得分:3)
所有函数在完成时都会返回一个值。
如果您问他们是否应该返回,那么您实际上是在询问The Halting Problem
答案 2 :(得分:1)
一种方法可能是使用__del__
方法返回一个对象,该方法依赖于垃圾回收器在将来的某个时候删除未使用的值。
注意它不会立即发生。它甚至可能根本不会发生:)
答案 3 :(得分:0)
您可以考虑返回未来或“承诺”。也就是说,返回另一个函数,该函数在执行时执行必要的工作以实际确定结果。我似乎在想你想要懒惰的评估,即“只评估你需要的东西”(或多或少),而不是你的问题,这令人困惑地问道:“只有当它返回一个可能需要的值时才进行评估”。
答案 4 :(得分:-1)
Python中的所有函数总是返回。如果没有显式返回,则函数返回None。
===========
def func(): 而真: 通
此功能不会返回。
无法确定是否会返回任意函数。如果可以的话,你已经解决了图灵问题。