Skip to content

语法参考 ​

PyCN 沿用 Python 的语法结构,只把词汇换成中文。英文关键词同样可用,全角符号和半角符号也可以混用。

本页列出当前解析器实际支持的内容。想直接看可运行的代码,请前往案例。

语句 ​

PyCNPython
定义 函数名(参数):def name(params):
类 类名: / 类 类名(基类):class Name: / class Name(Base):
如果 条件: / 要不然 条件: / 否则:if / elif / else
迭代 变量 在 可迭代对象:for var in iterable:
返回 值 / 返回return value / return
跳出 / 继续 / 过break / continue / pass
导入 模块 作为 别名import module as alias
从 模块 导入 名称 作为 别名from module import name as alias
拉姆达 参数:表达式lambda params: expression
@装饰器 / 装饰 装饰器@decorator
变量 赋值为 值variable = value
甲,乙 赋值为 乙,甲a, b = b, a
对象.属性 赋值为 值obj.attr = value
字典【键】赋值为 值d[key] = value

函数参数支持用 *参数 表示 *args,用 **键值对参数 表示 **kwargs;普通参数保留中文名称。

pycn
定义 求和(甲,乙,*参数,**键值对参数):
    返回 甲 加 乙

关键词 ​

PyCNPython说明
定义def函数定义
如果if条件判断
要不然elif条件判断
否则else条件判断
迭代for支持多个循环变量
在in成员判断 / 循环
不是not一元取反
和and逻辑与
或or逻辑或
空None空值
真True布尔真
假False布尔假
返回return返回值
跳出break跳出循环
继续continue继续下一次循环
过pass占位语句
导入import导入模块
从from从模块导入
作为as起别名
类class类定义
拉姆达lambda匿名函数
装饰@装饰器

以下关键词已经被词法分析器识别,但解析器尚未实现:当(while)、是(is)、尝试 / 意外情况 / 最终(try / except / finally)、举起(raise)、断言(assert)、删除(del)、全局的(global)、非局部(nonlocal)、产出(yield)、等待(await)、异步的(async)、带上(with)、匹配 / 情况(match / case)。

运算符 ​

PyCNPython说明
加+加法
减-减法
乘*乘法
除以/真除法
地板除//地板除法
取余 / 取模%取余
取幂**幂运算
赋值为=赋值
等于==等于
不等于 / !=!=不等于
小于 / 《<小于
小于等于 / 《=<=小于等于
大于 / 》>大于
大于等于 / 》=>=大于等于
按位与&按位与
按位或``
按位异或^按位异或
按位取反~按位取反(一元)
左移<<左移
右移>>右移
和and逻辑与
或or逻辑或
不是not逻辑非(一元)

标点与字面量 ​

中文标点可以省略,同一个文件里也可以混用中英文标点。

PyCNPython
( )( )
【 】[ ]
,,
::
“…” / ‘…’"..." / '...'
《 》比较运算中的 < >
!=!=

花括号 { }、点号 . 和装饰器 @ 仍需使用半角符号。

字面量沿用 Python 的模型:

  • 数字可以用阿拉伯数字或中文数字书写:十二、一百、零点一、负零点五。
  • 字符串可以使用英文引号或中文引号,f 字符串使用常见的 f"..." 形式。
  • 列表使用 【】,字典和集合使用 {},元组使用 ()。
  • 真、假、空 分别对应 True、False、None。
pycn
名字 赋值为 “张三”
成绩 赋值为 【九十,八十五,一百】
信息 赋值为 {"姓名": 名字, "成绩": 成绩}
打印(f"{名字} 的成绩是 {成绩【零】}")

内置函数 ​

PyCNPythonPyCNPython
打印print范围range
整数int小数float
字符串str输入input
长度len列表list
字典dict集合set
元组tuple索引迭代enumerate
解析eval求和sum
最小值min最大值max
绝对值abs全部为真all
有一个为真any映射map
过滤filter拉链zip
打开open执行exec
类型type实例判断isinstance
子类判断issubclass目录dir
变量vars本地变量locals
全局变量globals帮助help
编号id排序sorted
父类super对象object
类方法classmethod静态方法staticmethod
属性property异常Exception

在需要普通名称的位置(例如函数参数),这些内置函数名也可以作为变量名使用。

列表方法 ​

PyCNPython说明
列表.添加(元素)list.append(element)在末尾添加元素
列表.插入(索引,元素)list.insert(index, element)在指定位置插入
列表.移除(元素)list.remove(element)移除第一个匹配项
列表.弹出() / 列表.弹出(索引)list.pop() / list.pop(index)移除并返回元素
列表.清空()list.clear()清空列表
列表.复制()list.copy()浅拷贝
列表.计数(元素)list.count(element)统计元素出现次数
列表.扩展(其它列表)list.extend(other)用可迭代对象扩展
列表.索引(元素)list.index(element)返回元素第一次出现的索引
列表.反转()list.reverse()就地反转
列表.排序()list.sort()就地排序

直接调用 排序 时映射为内置函数 sorted;作为属性调用时映射为 .sort()。

魔法方法 ​

PyCNPythonPyCNPython
魔法初始化__init__魔法新建__new__
魔法销毁__del__魔法字符串表示__str__
魔法表达式__repr__魔法字节表示__bytes__
魔法格式化__format__魔法等于__eq__
魔法不等于__ne__魔法小于__lt__
魔法小于等于__le__魔法大于__gt__
魔法大于等于__ge__魔法哈希__hash__
魔法布尔__bool__魔法属性获取__getattr__
魔法属性设置__setattr__魔法属性删除__delattr__
魔法属性获取项__getitem__魔法属性设置项__setitem__
魔法属性删除项__delitem__魔法长度__len__
魔法可迭代__iter__魔法迭代下一个__next__
魔法反转__reversed__魔法包含__contains__
魔法加__add__魔法减__sub__
魔法乘__mul__魔法除__truediv__
魔法地板除__floordiv__魔法取余__mod__
魔法取幂__pow__魔法左移__lshift__
魔法右移__rshift__魔法按位与__and__
魔法按位或__or__魔法按位异或__xor__
魔法取反__invert__魔法可调用__call__
魔法进入__enter__魔法退出__exit__
魔法拷贝__copy__魔法深拷贝__deepcopy__
魔法名称__name__

当前限制 ​

  • 暂不支持调用时使用关键字参数(名称=值)以及推导式。
  • 尚未实现 while、try / except、with、async / await、yield、match、raise、assert、del、global、nonlocal。
  • 多变量赋值的目标只能是普通名称;属性和索引需要逐个赋值。
  • 本地 .pycn 模块按文件名在导入文件所在目录中解析,不支持点号分隔的模块路径。

文档由 Vincent-the-gamer 提供 | 使用 MIT 许可证开源