我正在开发一个应用程序,在其中我执行一些请求以获取对象ID.在每一个之后,我调用一个方法(get_actor_info()
)将此id作为参数传递(参见下面的代码).
ACTOR_CACHE_KEY_PREFIX = 'actor_' def get_actor_info(actor_id): cache_key = ACTOR_CACHE_KEY_PREFIX + str(actor_id)
正如可以注意到,我在铸造actor_id
到string
与前缀相连来.但是,我知道我可以通过多种其他方式(.format()
或者'%s%d'
,例如)来实现这一点,这导致了我的问题:'%s%d'
在可读性,代码约定和效率方面,它会比字符串连接更好吗?
谢谢
这可能很容易成为一个基于意见的线程,但我发现格式在大多数情况下更具可读性,并且更易于维护.在不进行"精神连接"的情况下,可以更容易地查看最终字符串的外观.例如,哪些更具可读性?
errorString = "Exception occurred ({}) while executing '{}': {}".format( e.__class__.__name__, task.name, str(e) )
要么:
errorString = "Exception occurred (" + e.__class__.__name__ + ") while executing '" + task.name + "': " + str(e)
至于是否使用%
或.format()
,我可以更客观地回答:使用.format()
.%
是"旧式",根据Python文档,它们很快就会被删除:
由于
str.format()
很新,很多Python代码仍然使用%
运算符.但是,由于这种旧式格式最终将从语言中删除,str.format()
因此通常应该使用.
后来的文档版本已经停止提及这一点,但是,这.format()
是未来的方式; 用它!
连接速度更快,但这不应该是一个问题.使您的代码可读和可维护作为第一线目标,然后优化您稍后需要优化的部分.过早优化是万恶之源;)
在性能方面,串联效果更好。在您的示例中,连接和替换都是可读的,但是当涉及到更复杂的模板时,替换将赢得简单性和可读性。
例如,如果您有数据并希望以html格式显示,则连接将使您头痛,而替换将简单易懂。