学径 LearnPath

CAICP-E · Python 编程基础 / Wiki

函数

把一组步骤包起来,写一次、用多次。

它是什么

函数 像食谱。 步骤写一次。 以后按名字做很多遍。

程序变长以后,同一段话会反复出现。 打包起来,名字就是按钮。 按下按钮,整组步骤就跑一遍。

定义用 def。 名字后面加括号和冒号。 里面的句子要 缩进

python
def say_hello():
    print("你好")

say_hello()

上面是定义。 下面是调用。 还没定义就调用,会报错。

名字从哪来

函数的英文是 function。 数学课上,函数是一台「放进材料、得到结果」的机器。 f(x) = x + 1:放进 3,得到 4。

编程借用了这个词。 def 是 define 的缩写,意思是「定义」。 return 来自英语「送回」,也是 C 语言家族里的常用词。

Python 自己还准备了许多现成帮手,见 内置函数printlenabs 都是已经定义好的函数。 你也可以用 def 做自己的。

函数名也用小写加下划线。 和 变量 一样。

它怎么工作

参数

括号里的名字叫参数。 它表示要传进去的材料。 调用时放进去的值叫实参。

python
def greet(name):
    print("你好,", name)

greet("小明")

name 的意义是:这位朋友叫什么。 名字要好懂。

可以有多个参数。 顺序一般要对应。

无参函数:括号空着。 它不需要额外材料。 但括号仍要写,调用时也要写 ()。 没有括号,只是提到这个函数,不会跑。

返回值

print 给眼睛看。 return 把结果送回给程序。

python
def add(a, b):
    return a + b

s = add(3, 5)

s8return 一执行,函数就结束。 后面的句子不会再跑。

没有 return 时,常常得到 None。 意思是没什么值。

参数是进去的材料。 返回值是出来的成品。 中间是加工步骤。

函数内部的变量,外面常常拿不到。 要想把结果带出去,请用 return。

函数也可以调用别的函数。 一步套一步,和 嵌套 的想法相近,但靠的是名字,不是缩进。

生活里在哪里

  • 食谱「番茄炒蛋」:材料不同,步骤同一份。
  • 洗衣机的「开始」键:里面是一串固定动作。
  • 学校广播操:口令一喊,全场做同一套。
  • 计算器的平方键:放进一个数,送回它的平方。
  • 自动售货:选编号,机器执行取货步骤。

生活里把重复劳动做成按钮,就是函数的精神。

和相近概念的差别

函数是打包步骤。 循环 是重复步骤。 可以在函数里写循环,也可以在循环里调用函数。

内置函数不用你写 def。 自己的函数必须先定义。

print 改变屏幕上的样子,给人看。 return 把结果送回给程序,给后面用。 只 print 不 return,外面用变量去接,常常接到 None

算法是解决问题的步骤说明。 函数是把步骤装进程序的一种容器。 见 算法

常见误会

误会 1:只定义不调用,以为会自己跑。

食谱写在本子上,不会自动出菜。 要喊名字,加上括号。

误会 2:把 print 当成 return。

外面拿不到值。 屏幕上看见了,不等于程序收到了。

误会 3:参数个数对不上。

定义要两个,调用却给一个,会报 TypeError

误会 4:函数名用了数字开头。

和变量一样,名字不能以数字开头。

误会 5:忘记括号,写成 say_hello

那只是提到函数这个人。 加上 () 才是请它干活。

想知道更多

  • 书:潘洪波《小学生 Python 趣味编程》(把重复步骤收成一个名字,体会「写一次、用多次」)。
  • 书:埃里克·马瑟斯《Python 编程:从入门到实践》(函数章把参数和返回值讲得很清楚,可和家长一起读)。

未登录时不会保存学习进度