Python 在变量中保存字符串的长度,或在需要时使用?

Python 在变量中保存字符串的长度,或在需要时使用?,python,performance,Python,Performance,问题是关于代码的速度和效率,我知道这并不重要,但我很好奇。这两种方法中哪一种更快更好地使用?将字符串的长度保留在变量中需要内存,但另一方面,每次计算字符串的长度也需要时间,那么哪种方法更好 my_str = "Hello, World!" strlen = len(my_str) print(f"Length of str is: {strlen}") print(f"Length of str is: {strlen}") prin

问题是关于代码的速度和效率,我知道这并不重要,但我很好奇。这两种方法中哪一种更快更好地使用?将字符串的长度保留在变量中需要内存,但另一方面,每次计算字符串的长度也需要时间,那么哪种方法更好

my_str = "Hello, World!"
strlen = len(my_str)

print(f"Length of str is: {strlen}")
print(f"Length of str is: {strlen}")
print(f"Length of str is: {strlen}")
print(f"Length of str is: {strlen}")

由于计算机目前拥有大量内存,而整数的值实际上无关紧要,因此我会选择第一种方法。

我认为在几乎任何可以想象的情况下,存储单个字符串长度的内存占用应该无关紧要


在大多数情况下,代码的作者应该优化以获得清晰性,而不是速度,除非这是一个已被证明的瓶颈。

Python中的每个函数调用都相对昂贵——只是执行调用的机制,不管它当时是否在函数中工作

所以你的第一个选择是更快


来源:表示“Python中的函数调用开销相对较高,特别是与内置函数的执行速度相比。”

“将字符串长度保留在变量中需要内存”,不,不太可能。字符串的长度已经被
str
对象缓存。特定的计时可能特定于您的环境:使用
timeit
自己查找@juanpa,arrivillaga你确定吗?有消息来源吗?@ProAssemblyProgrammer是的,你为什么不这么想?实际上,所有内置Python对象都将保持其大小,容器的
len
永远不是线性的。但如果您对此持怀疑态度,请注意,它实际上调用了只访问
->length
字段的函数。@juanpa.arrivillaga实际上我不知道string对象是如何在python中构造的,或者len()是如何作用于它的。。。因此,我宁愿不冒风险,将值保存到变量中。但也许你是绝对正确的。完全同意:“优化以提高清晰度,[…]除非这是一个经验证的瓶颈。”
my_str = "Hello, World!"
print(f"Length of str is: {len(my_str)}")
print(f"Length of str is: {len(my_str)}")
print(f"Length of str is: {len(my_str)}")
print(f"Length of str is: {len(my_str)}")