加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python中变量的名称和程序效率

发布时间:2020-12-16 23:53:57 所属栏目:Python 来源:网络整理
导读:当我编程时,我喜欢给我的变量非常有意义的名字. 根据我的理解,在C和其他编译语言中,这两行完全等价: 第1行: bool a = true; 第2行: bool bob_likes_very_much_to_eat_strawberry_on_friday_evening = true; 原因是:它将被编译,变量名称在进程中丢失(?).

当我编程时,我喜欢给我的变量非常有意义的名字.
根据我的理解,在C和其他编译语言中,这两行完全等价:

第1行:

bool a = true;

第2行:

bool bob_likes_very_much_to_eat_strawberry_on_friday_evening = true;

原因是:它将被编译,变量名称在进程中丢失(?).

另一方面,这就是我要问的,似乎以下两个在python中不相同:

第1行:

a = True

第2行:

bob_likes_very_much_to_eat_strawberry_on_friday_evening = True

原因是它被解释了,解释器将使用一些带有变量名的字典作为它将要查询的键(?).我不知道这些字典是如何实现的,但对于我来说,散列长变量名可能需要更长时间(?)并且在某些情况下会产生影响并不是很疯狂.

那么,在某些情况下我应该小心保持我的变量名称长度合理吗?

注1:
这个帖子很相似:
Does how you name a variable have any impact on the memory usage of an application?
但没有关于python出现的明确答案(选择的答案说它一般会对解释语言产生影响,其他答案说它对python没有特别的影响)

笔记2:
我的观点不是提倡由于代码不可读而导致错误的微优化.我想要知道如果通过提供额外的长名称,我在执行速度方面做了某种妥协.

最佳答案
差异应该很小.但是我从Win7 64 Bit的Python 2.7.6的第一个答案得到了一些不同的结果.

>>> import timeit
>>> timeit.timeit(stmt="a = True",number=1000000000)
33.17448742396358
>>> timeit.timeit(stmt="bob_likes_very_much_to_eat_strawberry_on_friday_evening = True",number=1000000000)
32.47728300208675
>>> timeit.timeit(stmt="bob_likes_very_much_to_eat_strawberry_on_friday_evening_bob_likes_very_much_to_eat_strawberry_on_friday_evening_bob_likes_very_much_to_eat_strawberry_on_friday_evening_bob_likes_very_much_to_eat_strawberry_on_friday_evening_bob_likes_very_much_to_eat_strawberry_on_friday_evening_bob_likes_very_much_to_eat_strawberry_on_friday_evening_bob_likes_very_much_to_eat_strawberry_on_friday_evening_bob_likes_very_much_to_eat_strawberry_on_friday_evening_bob_likes_very_much_to_eat_strawberry_on_friday_evening = True",number=1000000000)
33.11944278143642

因此,它应该是实施和平台依赖.

在内存使用方面,考虑到页面对齐,较长的变量名称应该占用更多空间.

此外,即使长变种名称花费更多的时间和空间.如果它更有意义且易于理解,我肯定会使用它.这比有效率更重要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读