【发布时间】:2015-03-11 17:37:17
【问题描述】:
Fowler 的 Extract Variable 重构方法,以前的 Introduce Explaining Variable,说使用临时变量使代码对人类更清晰。这个想法是通过引入一个不需要的局部变量来阐明复杂的代码,并为说明目的命名该变量。它还提倡这种对 cmets 的解释。Other languages 优化掉临时变量,因此没有时间或空间资源成本。为什么 Python 不这样做?
在 [3] 中:def multiple_of_six_fat(n): ...:multiple_of_two = n%2 == 0 ...:multiple_of_three = n%3 == 0 ...:返回 multiple_of_two 和 multiple_of_three ...: 在 [4] 中:def multiple_of_six_lean(n): ...:返回 n%2 == 0 和 n%3 == 0 ...: 在[5]中:导入dis [6] 中:dis.dis(multiple_of_six_fat) 2 0 加载快速 0 (n) 3 负载常数 1 (2) 6 BINARY_MODULO 7 负载常数 2 (0) 10 COMPARE_OP 2 (==) 13 STORE_FAST 1 (multiple_of_two) 3 16 加载快速 0 (n) 19 负载常数 3 (3) 22 BINARY_MODULO 23 负载常数 2 (0) 26 比较_OP 2 (==) 29 STORE_FAST 2 (multiple_of_three) 4 32 LOAD_FAST 1 (multiple_of_two) 35 跳转_IF_FALSE_OR_POP 41 38 LOAD_FAST 2 (multiple_of_three) >> 41 返回值 在 [7] 中:dis.dis(multiple_of_six_lean) 2 0 加载快速 0 (n) 3 负载常数 1 (2) 6 BINARY_MODULO 7 负载常数 2 (0) 10 COMPARE_OP 2 (==) 13 跳转_IF_FALSE_OR_POP 29 16 加载快速 0 (n) 19 负载常数 3 (3) 22 BINARY_MODULO 23 负载常数 2 (0) 26 比较_OP 2 (==) >> 29 返回值【问题讨论】:
标签: python optimization refactoring python-internals