目录
一.函数说明
二.函数介绍
函数简介
作用
函数分类
三.自定义函数
定义函数
调用函数
pass关键字
定义一次执行多次
一.函数说明
Python中的函数是一个重要的编程概念,它允许编程者封装代码块以实现特定的功能。函数的作用和应用场景非常广泛,以下是一些关键点。
作用
1代码重用:通过定义函数,可以避免重复编写相同的代码。这样做不仅可以减少工作量,还可以使代码更加组织化和可维护。
2模块化:函数可以将复杂的问题分解为较小的、更易于管理和测试的部分。这可以提高代码的可读性和可维护性。
3抽象:函数允许从细节抽象出来,侧重于高层次的操作。用户可以不必关心函数的内部实现,只需了解其接口(输入和输出)。
4命名空间分隔:函数有助于在局部作用域中封装变量,避免全局命名冲突,所以函数内的名称不会和全局命名空间发生冲突。
应用场景
1数据处理:对数据执行清洗、转换、计算等操作时,可以编写函数来处理各种数据结构。
2任务自动化:常用于写脚本来自动化日常任务,如文件处理、网络请求等。
3API开发:在Web开发中,函数常用于定义API端点,处理HTTP请求和响应。
4数学计算:在科学计算或工程领域,函数可用于封装数学方程或计算。
5用户定义的操作:在面向对象编程中,函数(即方法)用于定义对象的行为。
6回调和事件驱动编程:在图形用户界面GUI编程或网络编程中,函数作为回调对特定事件做出响应。
7测试和验证:编写自动化测试脚本时,函数可以用来封装测试用例和断言。
总的来说,在Python编程中,函数是代码组织的基本单元,它在简化代码结构、提高代码复用性和维护性方面发挥着重要作用。熟练使用函数可以极大提高编程效率和代码质量。
二.函数介绍
函数简介
函数:一个功能独立的代码块
示例:
# 定义一个函数,能够完成打印信息的功能
def print_info():print('------------------------------------')print(' 人生苦短,我用Python ')print('------------------------------------')
作用
函数在编程中是非常重要的一个知识点,大体功能如下
- 能够将部分代码划分为一个整体的功能
- 只需定义函数1次就可以使用N次,可以大大减少了代码的冗余
- 代码看上去更加整洁美观
示例一:未使用函数的情况
# 输出第1遍 佛祖镇楼
print(" _ooOoo_ ")
print(" o8888888o ")
print(" 88 . 88 ")
print(" (| -_- |) ")
print(" O\\ = /O ")
print(" ____/`---'\\____ ")
print(" . ' \\| |// `. ")
print(" / \\||| : |||// \\ ")
print(" / _||||| -:- |||||- \\ ")
print(" | | \\\\\\ - /// | | ")
print(" | \\_| ''\\---/'' | | ")
print(" \\ .-\\__ `-` ___/-. / ")
print(" ___`. .' /--.--\\ `. . __ ")
print(" ."" '< `.___\\_<|>_/___.' >'"". ")
print(" | | : `- \\`.;`\\ _ /`;.`/ - ` : | | ")
print(" \\ \\ `-. \\_ __\\ /__ _/ .-` / / ")
print(" ======`-.____`-.___\\_____/___.-`____.-'====== ")
print(" `=---=' ")
print(" ")
print(" ............................................. ")
print(" 佛祖镇楼 BUG辟易 ")
print(" 佛曰: ")
print(" 写字楼里写字间,写字间里程序员; ")
print(" 程序人员写程序,又拿程序换酒钱。 ")
print(" 酒醒只在网上坐,酒醉还来网下眠; ")
print(" 酒醉酒醒日复日,网上网下年复年。 ")
print(" 但愿老死电脑间,不愿鞠躬老板前; ")
print(" 奔驰宝马贵者趣,公交自行程序员。 ")
print(" 别人笑我忒疯癫,我笑自己命太贱; ")
print(" 不见满街漂亮妹,哪个归得程序员?")# 输出第2遍 佛祖镇楼
print(" _ooOoo_ ")
print(" o8888888o ")
print(" 88 . 88 ")
print(" (| -_- |) ")
print(" O\\ = /O ")
print(" ____/`---'\\____ ")
print(" . ' \\| |// `. ")
print(" / \\||| : |||// \\ ")
print(" / _||||| -:- |||||- \\ ")
print(" | | \\\\\\ - /// | | ")
print(" | \\_| ''\\---/'' | | ")
print(" \\ .-\\__ `-` ___/-. / ")
print(" ___`. .' /--.--\\ `. . __ ")
print(" ."" '< `.___\\_<|>_/___.' >'"". ")
print(" | | : `- \\`.;`\\ _ /`;.`/ - ` : | | ")
print(" \\ \\ `-. \\_ __\\ /__ _/ .-` / / ")
print(" ======`-.____`-.___\\_____/___.-`____.-'====== ")
print(" `=---=' ")
print(" ")
print(" ............................................. ")
print(" 佛祖镇楼 BUG辟易 ")
print(" 佛曰: ")
print(" 写字楼里写字间,写字间里程序员; ")
print(" 程序人员写程序,又拿程序换酒钱。 ")
print(" 酒醒只在网上坐,酒醉还来网下眠; ")
print(" 酒醉酒醒日复日,网上网下年复年。 ")
print(" 但愿老死电脑间,不愿鞠躬老板前; ")
print(" 奔驰宝马贵者趣,公交自行程序员。 ")
print(" 别人笑我忒疯癫,我笑自己命太贱; ")
print(" 不见满街漂亮妹,哪个归得程序员?")
示例二:使用函数的情况
# 定义一个函数,完成了独立输出"佛祖镇楼"的功能
def print_fozu():print(" _ooOoo_ ")print(" o8888888o ")print(" 88 . 88 ")print(" (| -_- |) ")print(" O\\ = /O ")print(" ____/`---'\\____ ")print(" . ' \\| |// `. ")print(" / \\||| : |||// \\ ")print(" / _||||| -:- |||||- \\ ")print(" | | \\\\\\ - /// | | ")print(" | \\_| ''\\---/'' | | ")print(" \\ .-\\__ `-` ___/-. / ")print(" ___`. .' /--.--\\ `. . __ ")print(" ."" '< `.___\\_<|>_/___.' >'"". ")print(" | | : `- \\`.;`\\ _ /`;.`/ - ` : | | ")print(" \\ \\ `-. \\_ __\\ /__ _/ .-` / / ")print(" ======`-.____`-.___\\_____/___.-`____.-'====== ")print(" `=---=' ")print(" ")print(" ............................................. ")print(" 佛祖镇楼 BUG辟易 ")print(" 佛曰: ")print(" 写字楼里写字间,写字间里程序员; ")print(" 程序人员写程序,又拿程序换酒钱。 ")print(" 酒醒只在网上坐,酒醉还来网下眠; ")print(" 酒醉酒醒日复日,网上网下年复年。 ")print(" 但愿老死电脑间,不愿鞠躬老板前; ")print(" 奔驰宝马贵者趣,公交自行程序员。 ")print(" 别人笑我忒疯癫,我笑自己命太贱; ")print(" 不见满街漂亮妹,哪个归得程序员?")# 调用2次函数,每次输出1个佛祖镇楼
print_fozu()
print_fozu()
函数分类
函数根据是否是自己编写可以分为两类
- 别人已经写好拿来直接用的函数,成为包括Python内置函数或者第三方包中的函数,更省事
- 开发者自己编写的函数(通常称为自定义函数);根据需要自己编写,更灵活
在整个函数相关知识学习中,我们主要以研究自定义函数为主,当自定义函数都弄明白了弄懂了,那么用别人的写好的函数就信手拈来了
三.自定义函数
上面的知识我们知道,函数就是一个独立功能的代码块,想要用函数一定要掌握两块知识
- 定义函数(即怎样制作函数)
- 调用函数(即怎样使用函数)
下面我们就来研究函数的定义以及调用。
定义函数
定义函数的格式如下:
def 函数名(形参):函数体
说明:
- 函数名:一定有,按照命名规则起个名字,注意Python中建议使用小写加下划线的方式,例如print_info而不用PrintInfo
- 函数体:一定有,就是整个函数真正要执行的代码,注意函数体前面缩进四个空格
- 形参:可有可无,专门用过来存储调用时传递给函数的数据用的
示例代码
下面定义一个函数,完成打印菜单的功能
def print_menu():print("-----------------------")print(" 欢迎光临 ")print("数字1: 黄瓜炒肉")print("数字2: 冬瓜炒肉")print("数字3: 西瓜炒肉")print("数字4: 南瓜炒肉")print("数字5: 北瓜炒肉")print("-----------------------")
说明:
- 函数名:print_menu
- 函数体:第2~9行的代码
- 形参:无
注意:定义了函数,这个函数不会被执行。就好比你发明了一个功能,这个功能不能自己用自己,必须等待别人使用才行,如果想让函数执行,就需要调用函数。
调用函数
通俗的讲:定义函数相当于打造了一个工具,调用函数相当于使用这个工具完成想要做的事情
调用函数的格式如下
函数名(实参)
说明:
- 函数名:一定有,想要调用的函数的名字
- 实参:可有可无,调用函数时给它传递的数据
注意:调用的函数的名字必须是先定义好的才能够调用,否则会失败
示例代码
# 定义了一个函数,实现打印菜单功能
def print_menu():print("-----------------------")print(" 欢迎光临 ")print("数字1: 黄瓜炒肉")print("数字2: 冬瓜炒肉")print("数字3: 西瓜炒肉")print("数字4: 南瓜炒肉")print("数字5: 北瓜炒肉")print("-----------------------")# 调用函数
print_menu()运行结果:
-----------------------欢迎光临
数字1: 黄瓜炒肉
数字2: 冬瓜炒肉
数字3: 西瓜炒肉
数字4: 南瓜炒肉
数字5: 北瓜炒肉
-----------------------
说明:
- 函数定义一定要在函数的调用之前,其原因:Python解释器在解析.py文件时会从文件的开头开始解析,会先遇到函数的定义,然后当遇到函数的调用时就知道它在哪,所以函数要先定义才能调用
pass关键字
如果一个函数,暂时不确定函数体的代码,可以用pass先占用位置,这样即没有语法错误,也能够让开发人员知道 这个函数功能没有实现,可以在后面进行编写
def 函数名():pass
示例:要定义4个函数,实现加减乘除的功能,但还不清楚具体功能怎样写,此时就可以用pass
# 定义了4个函数
def add_2_nums():passdef min_2_nums():passdef mult_2_nums():passdef div_2_nums():pass# 分别调用函数
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()
如果想清楚了具体的函数应该怎样实现,那么把pass删除,补上需要的代码即可
# 定义了4个函数
def add_2_nums():print("接下来要进行加法操作...")num1 = input("请输入第1个数:")num2 = input("请输入第2个数:")print("%s+%s=%d" % (num1, num2, int(num1) + int(num2)))def min_2_nums():print("接下来要进行减法操作...")num1 = input("请输入第1个数:")num2 = input("请输入第2个数:")print("%s-%s=%d" % (num1, num2, int(num1) - int(num2)))def mult_2_nums():print("接下来要进行乘法操作...")num1 = input("请输入第1个数:")num2 = input("请输入第2个数:")print("%s*%s=%d" % (num1, num2, int(num1) * int(num2)))def div_2_nums():print("接下来要进行除法操作...")num1 = input("请输入第1个数:")num2 = input("请输入第2个数:")print("%s/%s=%d" % (num1, num2, int(num1) / int(num2)))# 分别调用函数
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()
注意:Python代码规范中提到,定了多个函数,那么函数与函数之间空两行
定义一次执行多次
一个函数可以进行多次调用,每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了
def test():num = 100num += 1print("在test函数中num=%d" % num)test()
test()运行结果:在test函数中num=101
在test函数中num=101
说明:
- 第7行调用了第一次test函数,当test函数结束后num为101
- 第8行调用了第二次test函数,依然会从test函数的开头开始执行,所以结果依然是101