15.1导入 语句
用 导入 模块名 导入整个模块,然后通过 模块名.名字 使用其中的内容,语法与 Python 一致:
cql
# 导入 time 模块
导入 time
打印("当前时间戳:", time.time())
打印("格式化时间:", time.strftime("%Y-%m-%d %H:%M:%S"))标准库模块名保持英文原样即可,转译器不会改写字符串与模块名。
15.2从...导入
用 从 模块 导入 名字1, 名字2 只导入需要的部分。注意 归约(reduce)由 CQL 运行时兜底提供,但仍需显式 从 functools 导入 reduce:
cql
# 从 functools 导入 reduce
从 functools 导入 reduce
总数 = 归约(延迟 x, y: x + y, [1, 2, 3, 4, 5])
打印("归约求和:", 总数) # 1515.3导入中文适配子包
CQL 附带 19 个 CQ 系列中文适配子包,把热门 Python 库包装成中文 API,可以直接在 .cql 源码中使用。下面以 Web 与数据库为例:
cql
# 导入 CQFastAPI(Web 后端)
从 CQFastAPI 导入 快速应用, 查询参数, 启动服务
应用 = 快速应用()
@应用.获取("/")
函数 首页():
返回 {"消息": "你好,CQL Web 世界!"}cql
# 导入 CQSqlite(数据库)
从 CQSqlite 导入 连接
数据库 = 连接(":memory:")
数据库.执行("CREATE TABLE 用户(编号 INTEGER PRIMARY KEY, 姓名 TEXT)")
数据库.执行("INSERT INTO 用户(姓名) VALUES(?)", ("小明",))
数据库.提交()
打印(数据库.查询字典("SELECT * FROM 用户"))
数据库.关闭()提示:SQL 语句本身仍使用英文关键字。SQL 并不是 Python 语法,CQL 转译器不会改写字符串中的内容。
15.4模块名大小写映射
子包名大小写均可使用:CQFastAPI 与 cqfastapi 都行。转译器会自动把大写形式的模块名映射为实际的小写包名:
cql
# 大小写均可:转译器自动映射到小写包名
从 cqfastapi 导入 快速应用
从 cqsqlite 导入 连接
从 CQLog 导入 信息
信息("大小写混用也完全没问题")| CQL 写法 | 实际包名 | 底层库 |
|---|---|---|
CQFastAPI / cqfastapi | cqfastapi | FastAPI |
CQSqlite / cqsqlite | cqsqlite | sqlite3(内置) |
CQHttp / cqhttp | cqhttp | requests + httpx |
CQLog / cqlog | cqlog | loguru(回退 logging) |
15.5安装包自动导入
使用包管理器 cqlip 安装的包会被编译缓存到 ~/.cql/cache,cql run 执行时会自动把该目录加入 sys.path,因此安装后可以直接 导入:
bash
$ cqlip install 我的工具
安装完成:~/.cql/packages/我的工具/
已编译:~/.cql/cache/我的工具/cql
# 安装后直接导入使用
导入 我的工具
打印(我的工具.问候())提示:安装时源码存放在
~/.cql/packages/包名/,编译产物存放在 ~/.cql/cache/包名/(保持相对路径),安装完成后会自动编译全部 .cql 文件。