函数创建&调用


介绍— “去吧,愿你一生平安,桥都稳固,隧道都光明”

函数是一段可重复使用的、封装好的代码块,可以在代码的不同位置随时调用,它接受输入合规的参数,可以执行特定的任务,或者返回一个想要的结果。

假如有一个糕点师傅正在制作糕点,那么函数就可以想象为制作糕点的烤箱,在烤箱中放入奶油、面粉、糖等原材料就可以制作出美味的糕点,这些原材料可以想象为传递给函数的参数,制作出来的糕点就是这个函数输出的结果。

函数可以理解为把内容输入给一个黑匣子,让它内部处理消化,然后输出我们想要的内容。

无法显示

在 Python 中,函数具有以下几个特点:

特点 描述
模块化 函数是将一段代码块封装起来,形成一个独立的模块,让程序结构更清晰。
灵活性 函数将复杂的问题分解为更小的单元,可以根据不同的需求,调整函数的行为和输出结果。
易管理 不同的函数负责不同的任务,可以将所有的函数放在单独的文件中,使主程序更加简洁易读。

像我们之前一直接触到的 print 函数就是一个封装好的函数,用于将内容打印在输出框中。


函数的创建和调用

在 Python 中,创建一个函数通常会用到以下几个要素:def 关键词参数函数主体返回值。 其中,参数返回值可以根据情况选择是否省略。

名称 描述
def 关键词 用于定义函数名称,使用def关键词后向程序声明要创建一个新的函数。
参数 参数是函数的输入值,它是函数执行任务所需的信息。参数可以是一个或多个,也可以没有。
函数主体 函数主体是函数定义中的代码块。它是函数的实际执行部分。
返回值 函数可以有返回值,用于返回函数执行的结果,当函数执行到 return 时,函数将停止执行。

在程序中,函数的写法结构如下:

# 使用 def 定义函数名称,后面传入参数,可以传入一个或者多个,也可以不传
def 函数名(参数1,参数2,参数3,·······):
    # 函数主体
    ·······
    # 返回结果
    return 待返回的结果

函数的调用可以通过函数名称后跟一对括号完成,括号内可以传递函数所需的参数。

来看一个简单的示例方便理解:

【示例】我们来创建一个简单的函数,这个函数不传入任何参数,不返回任何结果

# 定义一个 print_hello 函数
def print_hello():
    # 输出一段话
    print('Hello World')
 
# 调用这个创建好的函数
print_hello()

运行代码,结果如下:

Hello World

这个函数没有参数也没有 return 的值,只是单纯的完成了输出 Hello World 这段话到输出框中,这是一个最基础的函数创建的示例,因为函数在创建时没有设定传入参数,所以这个函数在调用时无法传入任何参数,所以括号中是空的,下面我们来看带参数的函数。

【示例】我们创建一个带参数的函数

# 定义一个 welcome_someone 函数
def welcome_someone(name):
    # 根据输入的参数整理出一段话
    word = "你好" + name + '!'
    print(word)
    print('欢迎您来到这里!')
 
# 调用这个创建好的函数,输入参数
welcome_someone('牧旗')

运行代码,结果如下:

你好牧旗!
欢迎您来到这里!

我们换一个名字试一下:

welcome_someone('小明')

运行代码,结果如下:

你好小明!
欢迎您来到这里!

可以看出,我们创建的函数 可以根据传入的参数变化,输出不同的内容,这就是函数中参数的作用,可以根据使用者的需求,灵活变化想要的过程和结果。

下面我们看一个带 return 返回值的例子:

【示例】我们创建一个可以计算三角形面积的函数

# 定义一个 triangle_area 函数计算三角形面积,设定传入的参数是底和高
def triangle_area(bottom,height):
    # 三角形的面积是底乘高除2
    area = bottom * height * 0.5
    return area
 
# 调用这个创建好的函数,输入底和高
my_area = triangle_area(6,8)
 
# 输出结果
print('三角形的面积是:',my_area)

运行代码,结果如下:

三角形的面积是: 24.0

在这个示例中,我们定义的 triangle_area 函数接收两个参数,并使用了 return 返回了一个值,因为有了 return ,所以后面调用 triangle_area 函数的时候会有一个结果,我们将这个结果赋予给变量 my_area 就可以在后面调用了。

最开始的两个示例中并没有 return 存在,所以没有返回任何值,如果将没有 return 的函数赋给变量,那么这个变量将会是空值。


参数的使用

函数的参数是用于接收函数调用时传递给函数的值。当定义函数时,我们可以在函数名后面的圆括号中定义参数。这些参数允许我们在函数内部使用调用函数时提供的值。

调用参数

在 Python 中,当函数创建好之后,参数有两种方式可以进行调用,一种是 按照对应位置传入参数,一种是 使用关键词参数

按照对应位置传入参数是指在调用函数时,按照函数设定的参数顺序写入参数值,使用关键词参数是指调用函数时,向参数名称进行赋值,这样就不需要按照顺序来传参了。

让我们通过一个简单的示例来理解这两种方式的含义和区别:

# 定义一个函数计算两个数的和
def add(x,y):
    # 计算输入的参数的和
    result = x + y
    return result
 
# 方式一:按照函数定义时的参数顺序输入参数
number = add(1,2)
 
# 方式二:使用关键词传入参数,有一一对应关系,这样就不需要按照顺序来传
number = add(x = 1, y = 2)

定义参数

在上面的教程中我们了解到了两种调用函数的方式,一种是 按照对应位置传入参数,一种是 使用关键词参数 这两种调用方式,在定义参数时有以下几种方法可以进行选择:

名称 描述
默认参数 函数创建者可以在函数中提前对参数进行赋值,如果使用者没有指定参数则会自动使用这个默认值。
可变参数 函数创建者在不确定使用者传入的参数数量时,可以设定可变参数变量,允许函数接受任意数量的参数。
可变关键词参数 函数创建者在不确定使用者传入的关键字参数数量时,可以设定可变关键词参数,允许函数接受任意数量的关键词参数。

函数作用域

函数作用域指的是在程序中定义的变量的使用范围。比如 变量在该函数内部定义时只能在函数内部使用,在函数外部不可访问 ,第一次读到这个概念的新手可能有点懵,但是看完后面的例题后就会有所了解,在 Python 中,有以下两种类型的作用域:


例题

【例题1】编写一个函数,用于根据各科的成绩分数计算平均分,并根据得分判断分级,允许用户同时录入多个科目得分和其他信息。

【分析】这个例题涉及到了函数、条件判断、循环的相关知识,在设定程序的时候使用可变参数和可变关键词参数,允许用户输入多个科目的成绩和自定义信息。

# 规定输入姓名,输入任意数量的分数,任意数量的其他信息
def report(name,*scores,**other_info):
    print('--------开始生成报告---------')
 
    # 输出姓名
    print('姓名:',name)
    print('-----------------')
 
    # 输出个人其他信息
    for key, value in other_info.items():
        print(str(key)+":"+str(value))
    print('-----------------')
 
    # 计算平均分
    score = sum(scores)/len(scores)
    print('您的平均分是'+str(score)+'分')
 
    # 根据平均分判断成绩分级
    if 90 <= score :
        result = '优秀'
    elif 80 <= score < 90 :
        result = '良好'
    elif 70 <= score < 80 :
        result = '及格'
    else :
        result = '不及格'
 
    # 输出成绩和分级结果
    for i in range(0,len(scores)):
         print("科目"+str(i+1)+"的分数是:"+ str(scores[i])+"分")
 
    print("您的成绩分级是" + result)

这样我们就完成定义了我们想要的函数,接下来我多次调用这个函数,并按照规则输入参数来试试:

report('李明',80,80,90,78,90,姓别='男',年级='高三',班级='二班')
report('王华',89,82,94,70,80,姓别='女',学校='阳光高中',政治面貌='团员')
report('小红',71,82,84,姓别='女',出生年月='20010502')

运行代码,结果如下:

--------开始生成报告---------
姓名: 李明
-----------------
姓别:男
年级:高三
班级:二班
-----------------
您的平均分是83.6分
科目1的分数是:80分
科目2的分数是:80分
科目3的分数是:90分
科目4的分数是:78分
科目5的分数是:90分
您的成绩分级是良好
--------开始生成报告---------
姓名: 王华
-----------------
姓别:女
学校:阳光高中
政治面貌:团员
-----------------
您的平均分是90.0分
科目1的分数是:89分
科目2的分数是:82分
科目3的分数是:94分
科目4的分数是:90分
科目5的分数是:95分
您的成绩分级是优秀
--------开始生成报告---------
姓名: 小红
-----------------
姓别:女
出生年月:20010502
-----------------
您的平均分是79.0分
科目1的分数是:71分
科目2的分数是:82分
科目3的分数是:84分
您的成绩分级是及格

关注公众号【牧旗教程】,回复“更多例题”,获取更多题型进行训练~

您的打赏将帮助维护网站服务器的正常运营,并为作者的后续更新提供更多的动力。

无法显示 无法显示