初识函数
定义
函数是指封装了某一特定功能的代码块。
简单的讲,函数就是用来存储代码的"特殊变量"。
前面接触过的很多"功能"都是函数。
比如在屏幕上输出一些数据的print()
,生成一个指定范围整数序列的range()
等。
函数的功能是如何定义的呢?
定义函数
def sayWelcome():
print("欢迎光临")
print("商品一律九折")
代码的作用
这3行代码做的事情是定义了一个叫做"sayWelcome"的函数。
这个函数的功能是输出欢迎语内容。
def
一个关键字,def
是函数定义的关键字,是define的缩写。
sayWelcome
一个名称,函数名。
这里的名称其实就是变量名,只不过需要存储的不再是数据,而是代码,我们称为函数名。
括号
一对括号,是函数定义的标准格式。
冒号
一个冒号,表明接下来缩进的代码是属于这个函数的。
缩进
四个空格。
和判断、循环一样,函数内部的代码也需要缩进相应的空格。
函数体
几行代码组成的代码块。
实现该函数功能的代码块,称为函数体。
代码小结
当我们要定义函数时就需要这几个部分。
现在我们已经将输出欢迎语的代码打包,并为它贴上了sayWelcome
的标签。当我们需要展示欢迎语时,只需要"打电话"(call)给电脑,让它在此处执行sayWelcome
的代码。
在代码中使用我们已经定义好的函数,这个过程称为调用函数(Call Function)。
调用函数
def sayWelcome():
print("欢迎光临")
print("商品一律九折")
sayWelcome()
sayWelcome()
代码的作用
定义一个sayWelcome函数,实现输出欢迎语的功能。
第5、6行代码,调用了sayWelcome函数。
sayWelcome
一个名称,被调用的函数名。
程序通过函数名来定位函数体中的代码。
括号
一对括号,调用符号。
表示在此处执行该函数中的代码,是调用函数的标准格式。
代码小结
当我们要调用函数时就需要这几个部分。
代码执行顺序
函数体中的代码不是立刻执行的,而是等到该函数被调用时才执行。
我们可以理解为:函数的调用是一个迂回的路径。
当程序执行到第七行代码时,开始调用setWatermark
函数时,并不会继续执行第八行代码,而是跳转到定义函数setWatermark()
的内部
从第二行开始执行
直到第2,3,4行代码结束
再跳回到第7行代码,从而继续执行第8行代码
现在我们可以把需要重复使用的代码定义为一个函数,就像刚才的sayWelcome函数。
若我们希望修改函数中的内容怎么办呢?
若定义函数时预留一个位置接收数据。根据不同的情况传递不同的数据,就能更加灵活的解决刚才的问题。
这时候我们需要为函数"挖空",并在调用函数时"填空",即设置参数。
我们把提前挖好的"空"称为形参,把用来填空的数据称为实参。
形参与实参
定义
形参是形式参数的简称,指定义函数时设置的参数名称。
实参是实际参数的简称,指调用函数时实际传递的数据。
为函数设置参数
def sayWelcome(discount):
print("欢迎光临")
print(f"商品一律{discount}")
sayWelcome("九折")
sayWelcome("五折")
代码的作用
定义sayWelcome函数,并为它们设置一个参数discount。
第1行,定义sayWelcome函数并在括号中设置形参名称discount。
第3行,将discount形参放到函数体中使用,使discount中的数据按照指定的格式输出。
第5~6行,多次调用sayWelcome函数,并分别为discount形参传递实参数据"九折"、"五折"。
形参
定义一个形参,用来接收数据的参数名称。
形参
在代码中使用形参,接收到的数据会被传递到此处使用。
实参
实参,调用函数时传递给形参discount的数据。
代码小结
我们通过下面的代码为函数设置参数。
形参
形参是定义函数时设置的参数名称。
相当于我们定义了一个变量,但不需要给该变量赋值。
实参
实参是调用函数时传递给形参的数据。
相当于为形参变量赋值的数据。
参数可以定义多个,也可以不定义。
如果参数不止一个,多个参数之间可以用英文逗号","隔开。
根据函数的功能不同,我们可以传递不同类型的实参数据。
比如,我们可以把店铺名称与产品折扣都设置为参数。
小练习
计算BMI指数
请定义一个叫做"getBMI()"的函数,该函数包括2个参数height, weight,分别代表身高和体重。
这个函数的功能是通过一个人的身高和体重计算BMI指数,并用print输出结果。
BMI指数的计算公式为:BMI = 体重 /(身高X身高)
然后分两次调用这个函数:
第一次传入参数(1.83, 60)。
第二次传入参数(1.60, 50)。
def getBMI(height, weight):
BMI = weight / (height * height)
print(BMI)
getBMI(1.83, 60)
getBMI(1.60, 50)
请定义一个叫做"isOdd"的函数,该函数包括1个参数number,代表一个整数。
这个函数的功能是通过if语句判断number中的数字是否为奇数,并用print输出结果。
若此数为奇数,输出"奇数",否则输出"偶数"。 然后分两次调用这个函数:
第一次传入参数25。
第二次传入参数10。
# 定义isOdd函数
def isOdd(number):
# 判断number是否为奇数
if number % 2 == 1 :
print("奇数")
else :
print("偶数")
# 调用isOdd函数
isOdd(25)
isOdd(10)