PyDev 6.3.2不识别@=运算符,保存格式化后拆分引发语法错误求助
这个问题我之前也碰到过,PyDev 6.3.2确实对Python 3.5引入的@=(原地矩阵乘法,对应operator.__imatmul__)运算符支持不太到位,给你几个可行的解决思路:
自定义格式化规则,禁止拆分@=
打开Eclipse的设置面板,依次进入PyDev > Editor > Code Style > Formatter,点击"Edit"按钮进入格式化规则编辑界面。在"Spacing"选项卡下,找到"Operators"相关设置,检查是否有针对@运算符的空格规则,尝试添加@=为不需要添加空格的运算符;如果找不到直接选项,也可以调整"Assignment operators"的空格规则,确保@=不会被拆分成@ =。用注释临时跳过格式化
如果不想全局调整格式化规则,可以在包含@=的代码块前后添加特殊注释,让PyDev跳过这段代码的格式化:# @formatter:off a @= b # 这段代码不会被格式化 # @formatter:on这样保存时,
@=就不会被拆分成错误的格式了。升级PyDev到新版本
6.3.2是比较老旧的版本,后续的PyDev版本(比如7.0及以上)已经修复了对Python 3.5+新增运算符的支持问题。升级到新版本后,只要正确设置Python语法版本为3.6,@=就能被正确识别和格式化,不会再出现拆分的问题。临时关闭自动保存格式化
如果你暂时不想升级或调整规则,可以先关闭自动保存时的格式化功能:进入PyDev > Editor > Save Actions,取消勾选"Format source code"选项。这样保存文件时不会自动格式化代码,@=就能保持原样,但代价是其他代码也无法自动格式化了,算是应急方案。
内容的提问来源于stack exchange,提问作者hiro protagonist

