【发布时间】:2022-06-17 00:02:18
【问题描述】:
我有一个类似这样的代码:
str = some_template
str = str.replace('<HOLDER1>',data1)
str = str.replace('<HOLDER2>',data2)
str = str.replace('<HOLDER4>',data3)
... #(about 30 similar lines)
其中 data1/data2/etc 通常是对可能需要一段时间来计算的函数的调用。例如:
str = str.replace('<HOLDER5>',calc_factorial(1000))
为了节省运行时间,我希望 string.replace() 方法仅在 str 中找到旧值时才计算新值。这可以通过以下方式实现:
if '<HOLDER1>' in str:
str = str.replace('<HOLDER1>',data1)
if '<HOLDER2>' in str:
str = str.replace('<HOLDER2>',data2)
if '<HOLDER3>' in str:
str = str.replace('<HOLDER3>',data3)
...
但我不喜欢这种解决方案,因为它需要双倍的代码行数,这将是非常混乱的,并且还会为每个持有者两次在 str 中找到旧值..
有什么想法吗?
谢谢!
【问题讨论】:
-
是什么让你觉得这更快?