返回直接来自函数调用的值,而不是中间变量

2024-06-01 04:28:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数f(x),它执行某些操作并返回值(一个元组)。在

我有另一个函数,在处理参数之后(整个函数操作与问题无关);现在我想知道返回函数本身是否有恶意,vs runt函数,将输出转储到变量中并返回变量。在

一个变量有成本,给变量赋值也有成本;但除此之外,在幕后是否会发生什么巫术,使一个比另一个更好?在

def myfunction(self):
    [do something]
    return f(x)

^{pr2}$

或者一个更喜欢另一个(为什么)?我所说的纯粹是OOP persective;没有考虑到在内存和CPU周期方面创建变量和赋值是有代价的。在


Tags: 函数self参数returndefdosomething成本
3条回答

不返回函数。返回函数看起来像return f。返回函数调用的结果。一般来说,在返回结果之前保存结果的唯一原因是如果您计划在返回之前对其进行其他类型的处理,在这种情况下,只引用已保存的值而不是重新计算它会更快。另一个保存它的原因是为了清晰起见,将可能是一个长的单程线和大量的链接分为几个步骤。在

如果您有某种异步进程,在保存引用和返回数据之间在后台修改数据,那么这两个函数可能会产生不同的结果,但这是您必须根据程序的情况记住的。在

简而言之,如果您想引用它,请保存它,否则直接返回它。在

它们实际上是相同的;使用你认为可读性更强的一个。如果一次与另一次的性能确实很重要,那么Python可能不是最佳选择;)。在

它们之间的成本差异完全可以忽略不计:在最坏的情况下,一个额外的字典存储、一个额外的字典查找和一个额外的内存字符串。实际上,它甚至没有那么糟糕,因为cpython将局部变量存储在一个C数组中,因此它更像两个C级指针间接寻址。在

就风格而言,我通常会避免不必要的变量,但在特定情况下可能会更好。作为一个指导原则,考虑一下合并后的版本是否会导致一行过长的代码,额外变量是否有比egresult更好的名称,以及函数调用是否是您需要的结果(如果不是,变量是否/有多大帮助)。在

相关问题 更多 >