【发布时间】:2010-09-27 10:45:59
【问题描述】:
在 Python 中,我不知道在何时何地使用字符串连接与字符串替换。由于字符串连接的性能有了很大的提升,这(越来越多)是一种风格上的决定,而不是一个实际的决定吗?
举一个具体的例子,应该如何处理灵活 URI 的构造:
DOMAIN = 'http://stackoverflow.com'
QUESTIONS = '/questions'
def so_question_uri_sub(q_num):
return "%s%s/%d" % (DOMAIN, QUESTIONS, q_num)
def so_question_uri_cat(q_num):
return DOMAIN + QUESTIONS + '/' + str(q_num)
编辑:还有关于加入字符串列表和使用命名替换的建议。这些是中心主题的变体,即,哪种方式是什么时候做的正确方式?感谢您的回复!
【问题讨论】:
-
有趣的是,在 Ruby 中,字符串插值通常比串联快...
-
你忘了 return "".join([DOMAIN, QUESTIONS, str(q_num)])
-
我不是 Ruby 专家,但我敢打赌插值更快,因为字符串在 Ruby 中是可变的。字符串在 Python 中是不可变的序列。
-
只是对 URI 的一点评论。 URI 并不完全像字符串。有 URI,因此在连接或比较它们时必须非常小心。示例:服务器在端口 80 上通过 http 传递其表示。example.org(最后没有 slah)example.org/(斜杠)example.org:80/(slah+port 80)是相同的 uri,但不相同字符串。
标签: python string string-concatenation