Python中常见的反模式是+在循环中连接一系列字符串.这很糟糕,因为Python解释器必须为每次迭代创建一个新的字符串对象,并最终获得二次时间.(在某些情况下,CPython的最新版本显然可以优化它,但是其他实现不能,因此不鼓励程序员依赖它.)''.join是正确的方法.
不过,我听人说(这里包括对堆栈溢出),你应该永远不会使用+字符串连接,而是始终使用''.join或格式字符串.我不明白为什么如果你只是连接两个字符串就是这种情况.如果我的理解是正确的,它不应该花费二次时间,我认为a + b比任何一个''.join((a, b))或更清晰,更可读'%s%s' % (a, b).
+用于连接两个字符串是一种好习惯吗?还是有一个我不知道的问题?
我看到很多人使用这样的格式字符串:
root = "sample"
output = "output"
path = "{}/{}".format(root, output)
Run Code Online (Sandbox Code Playgroud)
而不是简单地连接像这样的字符串:
path = root + '/' + output
Run Code Online (Sandbox Code Playgroud)
格式化字符串是否具有更好的性能还是仅适用于外观?
我正在开发一个应用程序,在其中我执行一些请求以获取对象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)
Run Code Online (Sandbox Code Playgroud)
正如可以注意到,我在铸造actor_id到string与前缀相连来.但是,我知道我可以通过多种其他方式(.format()或者'%s%d',例如)来实现这一点,这导致了我的问题:'%s%d'在可读性,代码约定和效率方面,它会比字符串连接更好吗?
谢谢