python - Python 每个循环创建/分配一个值到一个变量是否比在循环外创建/分配一个变量需要更多的内存/时间?
问题描述
例如:
for i in range(5000):
a = "some words"
# Other things
对比
a = "some words"
for i in range(5000):
# Other things
我想第二个会更好,但到底好多少?在循环之外有一些代码可能更有效,但是当变量在使用之前立即分配时,调试和阅读也更容易。
解决方案
直观地说,在 vanilla cPython 中,在没有即时编译器可能会将该分配提升到循环之外的情况下,我们希望 option2 更快。
有关“编译器提升”的更多信息,请参见此处。
你可以自己试试。
import timeit
foo = '''
for i in range(5_000):
a = "some words"
'''
bar = '''
a = "some words"
for i in range(5_000):
pass
'''
print(timeit.timeit(foo, number=10_000))
print(timeit.timeit(bar, number=10_000))
给我:
1.3565055000000001
0.9187005000000001
请注意,尽管与您的应用程序所做的任何其他事情相比,这种速度差异可能毫无意义,我建议您使用您认为最容易理解和维护的任何内容。
推荐阅读
- python - 如何在 Django 查询中获取特定字段?
- python - 将句子拆分成单词 pandas 并保留标签
- reactjs - Otp 验证仅在用户第一次安装应用程序以响应本机与 saga 时
- typescript - 使用 eslint 从 graphql 解析器返回什么严格的打字稿类型?
- javascript - 如何使用 javascrip/jQuery 对表列求和?
- amazon-web-services - 使用 Contigo IdentityPoolId 访问未经身份验证的 AWS S3,错误:CredentialsError:配置中缺少凭据
- asp.net-core - JQuery可排序函数返回空字符串
- html - 请问为什么CSS没有对我的HTML代码生效?
- javascript - 在 Jest 中等待观察者完成
- python - 如何过滤字典并将结果附加到列表中?