You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.7.9为何允许b = a*+2这类语法合法?

为什么Python允许a*+2这类语法生效

这个语法不是Python 3.7.9特有的规则,所有Python版本都支持该写法,核心原因是Python对运算符的定义规则:

  • +、-除了作为常见的二元加减运算符外,同时可以作为一元运算符,代表正、负号
  • 一元运算符的优先级高于乘法*、除法/这类二元算术运算符

所以你提到的b = a*+2会被Python解析器自动识别为b = a * (+2),完全符合语法规则,不会抛出报错。

你提到的德国键盘布局下容易将a**2误写为a*+2的问题确实是实际存在的体验痛点,这类语法上合法但不符合开发者预期的代码,确实会提升排查成本。

针对这类问题可以用下面的方案规避:

  • 写代码时尽量遵循PEP8的空格规范,二元运算符前后加空格,如果确实需要用一元正号,也建议和前面的二元运算符分开,写成a * +2,一眼就能和a ** 2区分开
  • 接入pylint、flake8这类静态代码检查工具,可以配置规则检测无空格的连续运算符写法,在开发阶段就提前抛出警告,避免上线后才发现bug

内容的提问来源于stack exchange,提问作者cakelover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:36:02