相关疑难解决方法(0)

有什么理由不使用'+'连接两个字符串?

Python中常见的反模式是+在循环中连接一系列字符串.这很糟糕,因为Python解释器必须为每次迭代创建一个新的字符串对象,并最终获得二次时间.(在某些情况下,CPython的最新版本显然可以优化它,但是其他实现不能,因此不鼓励程序员依赖它.)''.join是正确的方法.

不过,我听人说(这里包括对堆栈溢出),你应该永远不会使用+字符串连接,而是始终使用''.join或格式字符串.我不明白为什么如果你只是连接两个字符串就是这种情况.如果我的理解是正确的,它不应该花费二次时间,我认为a + b比任何一个''.join((a, b))或更清晰,更可读'%s%s' % (a, b).

+用于连接两个字符串是一种好习惯吗?还是有一个我不知道的问题?

python anti-patterns string-concatenation

117
推荐指数
4
解决办法
18万
查看次数

格式化字符串与串联

我看到很多人使用这样的格式字符串:

root = "sample"
output = "output"
path = "{}/{}".format(root, output)
Run Code Online (Sandbox Code Playgroud)

而不是简单地连接像这样的字符串:

path = root + '/' + output
Run Code Online (Sandbox Code Playgroud)

格式化字符串是否具有更好的性能还是仅适用于外观?

python string-formatting

32
推荐指数
6
解决办法
2万
查看次数

Python字符串格式:%vs连接

我正在开发一个应用程序,在其中我执行一些请求以获取对象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_idstring与前缀相连来.但是,我知道我可以通过多种其他方式(.format()或者'%s%d',例如)来实现这一点,这导致了我的问题:'%s%d'在可读性,代码约定和效率方面,它会比字符串连接更好吗?

谢谢

python string string-formatting

10
推荐指数
2
解决办法
4779
查看次数