函数定义与调用
大家好!在这一章,我们要了解 Python 中的函数。想象一下,当我们做编程时,经常需要用到一些特定的功能,比如计算、打印、获取输入等。函数就是用来封装这些功能的,让你可以随时调用,省去重复写相同代码的麻烦。
简介
函数是一段可重复使用的代码块,它执行特定的任务并返回一个结果。
在编程中,函数用于将一段代码逻辑封装起来,以便在需要时可以方便地调用。
函数的主要目的是提高代码的重用性和可维护性。

首先,我们来简单了解一下什么是函数。函数其实就是一段可重复使用的代码,它执行特定的任务,并且可以返回一个结果。我们通过定义函数,把某个特定的任务封装在一起,这样就可以反复使用它,而不需要每次都写一遍。举个例子,比如你每天都需要做饭,写个食谱,你就可以每次按照食谱做,而不必每次都思考做饭的步骤。函数就像是这个食谱,只要你调用它,它就会自动执行任务。
函数组成
函数通常由以下几个组成部分构成:
- 函数名:函数名用于标识函数,以便在代码中调用它时使用。
- 参数:参数是函数在执行时所需的数据。
- 函数体:函数体是函数的实际代码逻辑,由若干语句组成。
- 返回值:返回值是函数体代码执行过后的运行结果。
我们看一下一个函数包含哪些部分:首先需要有函数名,是用来标识这个函数的名字,调用时用它来引用。还可以包含参数,参数就是函数执行时需要的外部数据,就像是你做饭时需要的食材。接下来就是函数体,它指的就是函数内部的代码逻辑,执行任务的地方。最后是返回值,也就是函数执行后的结果。想象你做饭完成后,最终端上的菜就是返回的结果。
内置函数
内置函数是指开发语言中预先定义好的实现特定功能的函数,可以直接使用。
比如:输入函数 input(), 输出函数 print() 等
在 Python 中,有很多已经预定义好的内置函数,这些函数提供了常用的功能,我们不需要自己重新写。例如,input 用来获取用户的输入,print 用来输出信息。我们可以直接使用这些函数。
函数定义
虽然系统预先定义好了大量的内置函数,但这些函数,还不能满足实际的开发需求,所以程序中允许根据实际需求自定义函数。
语法格式:
def function_name([parameter_list]):
['''注释信息''']
[function_body]
return [result]
虽然 Python 已经有很多内置函数,但有时候我们需要根据实际需求自定义函数,这样就能提高代码的复用性。函数的定义非常简单。我们使用 def 关键字来定义函数,后面跟上函数名和参数列表。函数定义的语法是这样的。
说明:
def: 自定义函数的关键字。function_name: 函数名称,在调用函数时使用,命名需要符合标识符命名规则。(): 函数的特征,用来书写参数列表。parameter_list: 用来接收函数运行时所需的外部数据(此章节不讲解)。::Python 固定语法。注释信息:非必须部分,函数的注释内容,通常是说明该函数的功能、要传递的参数的作用等。function_body:函数体,用来实现函数功能的逻辑代码。return [result]: 用来结束函数或将函数运行结果返回(此章节不讲解)。
下面我们来详细介绍一下定义语法中各部分的含义。def 是自定义函数的关键字。function name 就是函数名称,在调用函数时使用,命名需要符合标识符命名规则。小括号是函数的特征,用来书写参数列表。parameter_list 就是参数列表,用来接收函数运行时所需的外部数据。小括号后面需要跟上冒号,这是固定写法。函数体中可以包含注释信息,不过这部分是非必须部分,注释内容通常是说明该函数的功能、要传递的参数的作用等。接下来 function_body 的部分就是函数体,用来实现函数功能的逻辑代码。最后还可以包含 return,这个关键词用来结束函数或把函数运行结果返回回来。
示例
def show():
"""
此函数用来输出 Hogwarts
"""
print("Hogwarts")
注意:函数定义完成之后直接运行程序,将不显示任何内容。
下面我们来看一个最简单的例子。这里定义了一个 show 函数。这个 show 函数其实只做了一件事情,就是输出 Hogwarts,而函数体中的 print 就是执行的任务。需要注意的一点是,定义函数之后,函数并不会自动执行。如果你直接运行这段代码,程序并不会显示任何内容,除非你显式地调用这个函数。
函数调用
调用函数也就是执行函数。如果把创建函数理解为理解为创建一个具有某种功能的工具,那么调用函数就相当于使用该工具。
语法格式:
function_name([parameters_value])
调用函数就是执行函数,想象一下,创建函数就像是制作了一把工具,而调用函数就像是使用这个工具。函数定义好了,怎么用?那就要通过函数调用来实现。调用时只需要给出函数名和需要的参数就可以了。
说明:
function_name:函数名称,要调用的函数名称,必须是已经创建好的(包括内建的和自定义的)。parameters_value:参数列表,用来提供函数运行时使用的数据,可省略。(): 函数的特征,参数列表可省略,但圆括号不能省略。
下面来介绍一下调用语法的具体含义。function name 是要调用的函数名称,必须是已经创建好的函数,包括内建的和自定义的。parameters value 用来提供函数运行时使用的数据,不是必须参数,如果函数定义的时候需要再传入。小括号是函数的特征,参数列表可省略,但圆括号不能省略。
示例
print("第一次函数调用")
show()
print("第一次函数调用")
show()
print("程序执行结束")
下面来看下示例。上面我们定义了一个叫 show 的函数,调用它就是这么简单,用 show小括号。程序执行时会输出 Hogwarts。
函数返回值
函数返回值是指函数在被调用执行后,经过一系列的代码执行运算,得到一个处理结果,交给函数调用者的结果就是返回值。比如去饭店点菜后,返回的结果就是做好的被点的菜。
函数返回值通过 return 语句实现,一个函数在执行过程中,一旦遇到 return 语句,立刻就会停止执行,返回到函数调用处继续向下执行。
如果一个函数中,没有显示的书写 return 语句,函数实际也有返回值,默认返回值为 None。
def get_number():
num = input("请输入一个数字:")
num = int(num)
return num
函数的返回值就是函数执行完后给调用者的结果。你可以想象去饭店点菜,厨师做完后把菜端给你,这就是返回值。在 Python 中,函数通过 return 语句来返回值。只要函数遇到 return,就会停止执行,并且返回一个结果。需要注意的是,如果没有写 return,函数默认返回 None。上面的 get_number 函数会让用户输入一个数字,并返回该数字。比如,你输入 5,函数就会返回 5。
上面的函数用来从键盘输入一个数字,因为默认键盘所有输入的内容都是以字符串形式加载到程序中,所以需要进行类型转换,将转换后的数字返回给使用者。
如果想使用一个输入的数字时,就可以调用该函数。
以下代码是将字符串 hello 重复拼接 N 次(通过get_number函数从键盘输入的数字)后输出。
在这里只简单介绍函数返回值的使用,后面还会有章节详细讲解函数返回值的使用。
print("hello" * get_number())
我们可以把 get_number 函数返回的数字用来做一些事情,比如说:print 中传入 hello 乘以 get_number小括号。这行代码会让你输入一个数字,然后将字符串 hello 重复该数字次数输出。比如你输入 3,输出就会是 3 个 hello。
函数参数
函数参数是指在调用函数执行时,给定的一些函数执行过程中需要的数据。比如点外卖时,需要告知吃哪些菜,送到哪里,这些就是外卖在制做和送达时需要的数据。
程序也是一样,很多情况下,函数在执行过挰中,需要调用者给被调函数传入一个数据,才能让函数正确执行。
函数参数就是函数在执行时所需要的数据,就像你做饭时,除了食谱之外,食材也很重要。
函数的参数根据不同的场景分为 实际参数 和 形式参数 两种 :
实际参数: 也称为实参,是在函数调用时需要被传递的数据,可以是任意形式能得到一个具体值的表达式。形式参数: 也称为形参,是函数在定义在函数参数列表中的变量,用来接收数据,并在函数执行时通过形参使用接收的数据,所以形参只能是变量。
在 Python 中,函数的参数可以分为两种:实际参数,也叫实参,就是你在调用函数时传入的数据。形式参数,也叫形参,就是函数定义时使用的变量,用来接收实际参数。
def add(a, b):
return a + b
print(add(1, 2))
print(add(3, 4))
上面代码中,add 函数只负责对两个数字进行加法计算,并将结果返回,具体对哪两个数字计算,函数并不知道,也不关心。
在调用 add 函数时,通过实参传递的两个数字会被 add 函数的形参接收,并进行计算。
关于函数的参数,还有很多形式,在这里只介绍简单的使用,后面还会有章节详细讲解函数参数的使用。
在这个例子中,a 和 b 是形参,而 1 和 2、3 和 4 是实参。函数 add 会接收这些实参,并进行加法运算。
注意:
- 程序在执行到函数调用时,会跳转到函数定义位置执行函数体中的代码。
- 函数体执行结束后,将返回到函数调用处继续向后执行其它代码。
- 形式参数是用来接收数据的变量
- 实际参数是执行函数时真正参与计算的数据。
这里大家需要注意。当我们执行函数调用时,程序会跳转到函数定义的地方去执行函数体。执行完函数体后,程序会返回调用处继续执行后面的代码。形参是用来接收传入的数据,实参是函数执行时给的数据。
总结
- 函数组成
- 内置函数
- 函数定义
- 函数参数
最后我们来总结一下。这个章节我们学习了函数的基本概念,知道了函数由哪些部分组成,还学习了如何定义和调用函数。我们还了解了函数返回值和参数的概念,这些知识对于你编写和理解 Python 程序非常重要。在后面的章节中,我们会更详细地探讨函数的高级用法,今天的内容是一个很好的开始。