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)
如果您想知道首选的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)
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |