有 Python 基础?这张表让你一分钟定位 CNplus 和 Python 的不同。
这些差异都是故意的,为的是堵死新手最常踩的坑。
| 表达式 |
CNplus |
Python |
如果 0 |
❌ 编译错误 CN0301 |
假 |
如果 1 |
❌ 编译错误 CN0301 |
真 |
如果 "" |
❌ 编译错误 CN0301 |
假 |
如果 x != 0 |
✅ 真 |
✅ |
CNplus 只有 真/假 能出现在条件位置。 隐式真值是 Python 新手头号坑源(if [] 和 if [0] 行为相反)。
| 表达式 |
CNplus |
Python |
1 == 1.0 |
真 |
True |
1 == "1" |
❌ 错误 CN0303 |
False |
真 == 1 |
❌ 错误 CN0303 |
True |
空 == 空 |
真 |
True |
"a" < "b" |
真 |
True |
1 < "a" |
❌ 错误 CN0303 |
❌ 报错 |
跨类型比较一律报错,不返回假。 1 == "1" 悄悄返回 False 是 bug 的温床。
| 运算 |
CNplus |
Python |
4 / 2 |
2.0(恒为小数) |
2.0 |
"哈" * 3 |
"哈哈哈" |
一样 |
| 大整数 |
任意精度不溢出 |
一样 |
| 主题 |
CNplus |
Python |
| 未声明变量 |
❌ 编译期错误 CN0302 |
运行时 NameError |
重复声明 设 x |
❌ 错误 CN0307 |
允许覆盖 |
| 块作用域 |
如果/循环 主体也是新作用域 |
只有函数有作用域 |
| 修改外层变量 |
要写 外部 x = … |
global |
| 主题 |
CNplus |
Python |
| 布尔显示 |
真 / 假 |
True / False |
| 空显示 |
空 |
None |
| 类型名 |
中文(整数 小数 字符串…) |
英文 |
| 主题 |
CNplus |
Python |
| 关键字 |
中文(设 如果 循环 函数) |
英文 |
| 多分支 |
否则 如果 条件(等价 elif) |
elif |
| 遍历 |
遍历 列表 每个 x |
for x in list |
| 自增 |
x++ / x-- |
无(C 风格) |
| 异常处理 |
尝试 / 捕获 / 最后 |
try / except / finally |
| 全角标点 |
自动转半角 |
不认 |
更多精确规则见诊断码表和仓库里的 docs/spec/00-语义约定.md。