Python:函数中的额外赋值

Dev*_*per 2 python memory-management cpu-usage assign

考虑到以下两个版本的Python中非常简单的函数,问题是哪个优先于另一个,为什么?

使用了其他分配相比,是否有额外的内存使用和/或CPU使用case 1case 2

情况1:

def f(x):
    y = x*x
    return y

案例2:

def f(x):
    return x*x

从我的观点来看,case 1它比另一个更清晰,特别是在复杂计算和提供许多返回对象的情况下.另一方面,case 2外观非常紧凑,因此被认为是非常有吸引力的.因为简单只是简单有效.你怎么看?

更新:
我不知道Python中有反汇编程序!当我了解到我的问题的答案以及检查类似想法的方法时,真是太神奇了.特别欣赏.
from dis import dis as dasm
dasm(f)

Ray*_*ger 7

如果您想知道首选的Python样式,请查看标准库中的代码:

$ grep return Lib/*py
Run Code Online (Sandbox Code Playgroud)

你会发现case 2风格是最常见的.

我个人只在需要变量名称时才使用赋值表单来增加代码的清晰度:

normalized_query = query.replace(' ', '').lower()
return normalized_query
Run Code Online (Sandbox Code Playgroud)

此代码为分配引入了一部分开销:

>>> def f(x):
        return x + 2

>>> def g(x):
        y = x + 2
        return y

>>> dis(f)
  2           0 LOAD_FAST                0 (x)
              3 LOAD_CONST               1 (2)
              6 BINARY_ADD          
              7 RETURN_VALUE        
>>> dis(g)
  2           0 LOAD_FAST                0 (x)
              3 LOAD_CONST               1 (2)
              6 BINARY_ADD          
              7 STORE_FAST               1 (y)

  3          10 LOAD_FAST                1 (y)
             13 RETURN_VALUE 
Run Code Online (Sandbox Code Playgroud)