将现有字符串附加到新字符串中,而不是将其作为前缀添加,这与=+的字符串等效。

6

我正在使用PyCharm(版本4.0.3),并在以下代码的第二行收到样式警告“Assignment can be replaced with augmented assignment”

abc = 'and cheese'
abc = 'ham' + abc

* - 我的代码并非此代码,但会产生相同的错误。我正在以编程方式生成两个字符串,并且必须 / 希望能够先生成第一行(英语语法的第二部分)再生成第二行(英语语法的第一部分)。

但我不知道增强赋值运算符可以做到这一点。如果代码像这样(其中所需最终字符串的第一部分可以按执行顺序先生成)

abc = 'ham'
abc = abc + 'and cheese'

如果我没理解错的话,那么使用+=运算符应该可以轻松解决这个问题:
abc = 'ham'
abc += 'and cheese'

但是在我的问题背景下('and cheese'部分在'ham'之前被声明),有没有一种方法可以满足这个警告?


@tdelaney 那么 abc = 'ham {}'.format(abc) 怎么样? - Bhargav Rao
1
@BhargavRao:你的意思是字符串拼接的问题在于它不满足交换律,还是在于PyCharm无法理解它?;-) - Steve Jessop
@tdelaney 是的,那就是我想说的。问题出在PyCharm上。 - Bhargav Rao
@SteveJessop 好的。那么为什么它会与“+”混淆呢?是因为算术“+”是可交换的吗? - Bhargav Rao
@SteveJessop 是的,也许我们可以在 PyCharm 的错误报告中找到一些线索(如果有的话)... - Bhargav Rao
显示剩余12条评论
1个回答

4

有多种方法可以拼接字符串(或连接字符串)。

您可以使用str.join进行连接,但对于小列表来说可能效率略低:

abc = " ".join((abc, 'and cheese'))

或者使用格式:

abc = "{} {}".format(abc, 'and cheese')

但实际上,消除警告的正确方法是为IDE提交错误报告,因为看起来您的代码没有问题(评论中已有人指出它在最新版本中无法重现)。


哦,如果你的版本比较新,那么看起来这是他们 Python 语言检查器的一个回归问题。 - Paulo Scardine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接