我在Python中一遍又一遍地遇到以下小烦恼的困境:
选项1:
如果多次调用,因为为每次调用do_something()重新创建a_list,所以更干净但更慢(?)
def do_something():
a_list = ["any", "think", "whatever"]
# read something from a_list
Run Code Online (Sandbox Code Playgroud)
选项2:
更丑但更有效率(重新创建a_list创建)
a_list = ["any", "think", "whatever"]
def do_something():
# read something from a_list
Run Code Online (Sandbox Code Playgroud)
你怎么看?
Joh*_*hin 16
它有什么难看的?
列表的内容是否始终是常量,如示例中所示?如果是这样的话:Python的最新版本(从2.4开始)将通过评估常量表达式并保持结果来优化它,但前提是它只是一个元组.所以你可以把它变成一个元组.或者你可以不再担心那样的小事.
这是一个常量列表和一个常量元组:
>>> def afunc():
... a = ['foo', 'bar', 'zot']
... b = ('oof', 'rab', 'toz')
... return
...
>>> import dis; dis.dis(afunc)
2 0 LOAD_CONST 1 ('foo')
3 LOAD_CONST 2 ('bar')
6 LOAD_CONST 3 ('zot')
9 BUILD_LIST 3
12 STORE_FAST 0 (a)
3 15 LOAD_CONST 7 (('oof', 'rab', 'toz'))
18 STORE_FAST 1 (b)
4 21 LOAD_CONST 0 (None)
24 RETURN_VALUE
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |