Python 有没有更好的方法来做a=b+;A.
我正在使用PyCharm,我有以下声明:Python 有没有更好的方法来做a=b+;A.,python,string,pycharm,Python,String,Pycharm,我正在使用PyCharm,我有以下声明: a = 'foo' b = 'bar' a = b + a PyCharm强调了最后一句话: 赋值可以替换为扩充赋值 首先,我认为可能会有类似的情况,但最终以错误告终: a += b # 'foobar' a =+ b # TypeError: bad operand type for unary +: 'str' 但是“foobar”不是我想要的'barfoo'是 那么,什么是增广作业?有没有更合适的方法来做到这一点,或者我应该忽略PyCharm的
a = 'foo'
b = 'bar'
a = b + a
PyCharm强调了最后一句话:
赋值可以替换为扩充赋值
首先,我认为可能会有类似的情况,但最终以错误告终:
a += b # 'foobar'
a =+ b # TypeError: bad operand type for unary +: 'str'
但是“foobar”
不是我想要的<代码>'barfoo'是
那么,什么是增广作业?有没有更合适的方法来做到这一点,或者我应该忽略PyCharm的警告?只要忽略PyCharm,它是迟钝的。当操作数不能直接交换时,该注释显然不适用 该提示适用于数值操作数,因为
a+b
产生与b+a
相同的结果,但对于字符串,加法不是可交换的,PyCharm应该置身事外
如果确实要避免出现此消息,可以使用字符串格式:
a = '{}{}'.format(b, a)
但是我真的不想麻烦了。许多加法运算是可交换的(
1+2==2+1
),但这显然不适用于字符串。由于Python是动态类型的,PyCharm无法分辨这是哪种类型。@jonrsharpe:我相信PyCharm在编辑时做了大量工作,通过静态分析来尝试确定类型。你当然可以给它一些提示,告诉它应该是什么类型的。也许如果告诉a
和b
是字符串,它不会给出这个建议。@MartijnPieters有趣的是,它不会在函数中给出这个警告,所以我无法测试注释/docstring中的类型暗示是否会产生影响。但是,我很惊讶它没有拾取指定的字符串文本。