CQL 教程/CQL 基础/函数

函数

掌握 CQL 的函数定义与调用,包括参数、返回值、可变参数、全局变量与递归。

9.1定义与调用

使用 函数 关键字定义函数,函数体以冒号和缩进开始:

cql
函数 问候():
    打印("你好,CQL!")

问候()

9.2参数与返回值

函数可以接收参数,并通过 返回 把结果交还给调用方:

cql
函数 加(a, b):
    返回 a + b

结果 = 加(3, 5)
打印("结果:", 结果)

9.3参数默认值

参数可以带默认值,调用时不传则使用默认值:

cql
函数 问候(名字 = "世界"):
    返回 "你好," + 名字 + "!"

打印(问候())
打印(问候("喵酱"))

9.4关键字参数

调用时可以按参数名传值,顺序可以任意调整:

cql
函数 个人信息(姓名, 年龄):
    打印(姓名, 年龄)

个人信息(年龄=18, 姓名="小明")

9.5可变参数

*数值 收集任意数量的位置参数为元组,**配置 收集关键字参数为字典:

cql
函数 求和(*数值):
    总数 = 0
    循环 数值 在 数值:
        总数 += 数值
    返回 总数

打印(求和(1, 2, 3, 4))      # 10

函数 输出配置(**配置):
    打印(配置)

输出配置(主机="localhost", 端口=8080)

9.6中文函数名

CQL 支持中文函数名与中文变量名,让代码读起来像自然语言:

cql
函数 计算圆的面积(半径):
    返回 3.14159 * 半径 * 半径

打印(计算圆的面积(2))

9.7全局 与 非局部

函数内默认无法修改外部变量,使用 全局 声明后才能修改模块级变量:

cql
计数 = 0

函数 增加():
    全局 计数
    计数 += 1

增加()
增加()
打印(计数)          # 2

非局部 则用于嵌套函数中修改外层函数的变量,与 Python 的 nonlocal 语义一致。

9.8递归

函数可以调用自身,经典例子是斐波那契数列:

cql
函数 斐波那契(n):
    如果 n <= 1:
        返回 n
    返回 斐波那契(n - 1) + 斐波那契(n - 2)

打印("第 10 项斐波那契数:", 斐波那契(10))
提示:递归要注意设置终止条件,避免无限递归导致栈溢出。