Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有更好的方法来做a=b+;A._Python_String_Pycharm - Fatal编程技术网

Python 有没有更好的方法来做a=b+;A.

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的

我正在使用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中的类型暗示是否会产生影响。但是,我很惊讶它没有拾取指定的字符串文本。