一段代码要用好几次,就把它做成一个工具,起个名字,以后随叫随到。
函数 打招呼(名字)
返回 "你好," + 名字 + "!"
打印(打招呼("小明")) # 你好,小明!
打印(打招呼("小红")) # 你好,小红!
三行读懂:
函数 表示「我要造个工具」名字 是占位——用的时候填什么,它就是什么返回 表示「这个工具算出的结果是……」函数 加法(甲, 乙)
返回 甲 + 乙
打印(加法(3, 4)) # 7
有的参数通常就是某个值,可以给它一个「默认」——调用时不写就用默认,写了就覆盖:
函数 问候(名字, 招呼 = "你好")
打印(招呼 + "," + 名字)
问候("小明") # 你好,小明
问候("小刚", "晚上好") # 晚上好,小刚(第二个值覆盖默认)
带默认值的参数要排在后面,不带默认的排前面。
调用自己定义的函数时,一次调用有两种传法:
参数名 = 值,这时顺序可以调换。函数 相除(甲, 乙)
返回 甲 / 乙
打印(相除(8, 2)) # 4.0(全按位置)
打印(相除(乙 = 2, 甲 = 8)) # 4.0(全按名字,顺序可以调换)
一次调用只能选一种,不能混着写。 下面把 8 按位置传、又把 乙 按名字传,会报 CN0306:
函数 相除(甲, 乙)
返回 甲 / 乙
打印(相除(8, 乙 = 2))
参数数量不对、名字不存在、同一个参数重复传值,也都报 CN0306。以后学到的类初始化和方法同样遵守这条规则;CNplus 自带的内置函数只接受位置参数,见内置函数速查。
也可以这么写:
函数的别名有定义、过程,返回的别名有返、给出。这是 CNplus 的「一种意思多种写法」特性,详见关键字与别名。
学过 Python 的人看,零基础可跳过。
先看一个完整的 CNplus 程序:
函数 打招呼(名字)
返回 @"你好,{名字}!"
打印(打招呼("小明"))
同一个程序,用 Python 写:
def 打招呼(名字):
return f"你好,{名字}!"
print(打招呼("小明"))
| CNplus | Python |
|---|---|
函数 打招呼(名字) |
def 打招呼(名字): |
| 缩进后的函数身体 | 同样靠缩进表示函数身体 |
返回 值 |
return 值 |
@"你好,{名字}!" |
f"你好,{名字}!" |