四、python的函数基础--附代码案例
四、python的函数基础
- 4.1 函数概述
- 4.2 函数的定义
- 4.3 函数的要素
- 4.3.1 函数名
- 4.3.2 库
- 4.3.3 形式参数
- 4.3.4 返回值
- 4.4 函数的调用
- 4.5 函数执行流程
- 4.5.1 函数执行流程
- 4.5.2 函数的形参和实参
- 4.6 函数的说明文档
- 4.7 函数的嵌套调用
- 4.8 函数变量的作用域
- 4.8.1 局部变量
- 4.8.2 全局变量
- 4.9 综合案例
4.1 函数概述
定义:是组织好、可重复使用的、用来实现特定功能的代码段。
分类:python的内置函数和用户自定函数。①内置函数,即系统函数:这是由python提供的,用户不必自己定义这些函数,可以直接使用,如常用的统计长度的函数len();②用户定义函数:用以解决用户的专门需要。
举例:len()
函数是Python内置的函数,是提前写好的,可以重复使用,实现统计长度这一特定功能的代码段。如果不用函数,也可以通过for循环+计数累加
的方式来统计长度,但是会导致代码重复。
作用:提高程序的复用性,减少重复性代码,提高开发效率。
# 使用python的内置函数
str1 = "是组织好"
str2 = "可重复使用的"
str3 = "用来实现特定功能的代码段"
print("str1的长度=",len(str1))
print("str2的长度=",len(str2))
print("str3的长度=",len(str3))
# 不使用函数
str1 = "是组织好"
str2 = "可重复使用的"
str3 = "用来实现特定功能的代码段"count = 0
for i in str1:count += 1
print("str1的长度=",count)count = 0
for i in str2:count += 1
print("str2的长度=",count)count = 0
for i in str3:count += 1
print("str3的长度=",count)
# 用户自定函数
def my_len(string):count = 0for i in str1:count += 1print(count)str1 = "是组织好"
str2 = "可重复使用的"
str3 = "用来实现特定功能的代码段"
print(my_len(str1))
print(my_len(str2))
print(my_len(str3))
4.2 函数的定义
# 语法:
def 函数名(形参1,形参2......): # def是定义一个函数体的关键字,()区分变量和函数标志,即使没有形式参数,也不能省略。形参之间用英文逗号分开函数体return 返回值
4.3 函数的要素
函数要素 | 说明 |
---|---|
①函数名字 | 函数名字必须和头文件声明的名字一样 |
②库 | 包含指定的函数的包 |
③形式参数 | 参数类型要匹配 |
④功能 | 需要知道此函数能干嘛后才调用 |
⑤返回值 | 根据需要接收返回值 |
4.3.1 函数名
是用户定义标识符,命名规则同变量一致。注意,函数名的后面有个圆换号(),代表这个为函数,不是普通的变量名。()区分变量和函数标志,即使没有形式参数,也不能省略。
4.3.2 库
使用一些python的内置函数时,这些函数存在于一些库(包)里面,要先import导入包才能使用这些内置函数。比如随机库random里面的生成随机数randint函数。
4.3.3 形式参数
在定义函数时指定的形参,在未出现函数调用时,它们并不占内存中的存储单元,因此称它们是形式参数或虚拟参数,简称形参,表示它们并不是实际存在的数据,所以形参里的变量不能赋值。
4.3.4 返回值
定义:通过return关键字,把函数计算的结果返回给函数调用者。
语法:return 结果/表达式
注意:①return是结束函数的执行,因此return后面的语句不会被执行。
②如果函数没有使用return语句返回数据,函数也有返回值None,其类型是无返回值的函数<class ‘NoneType’>。None表示空的、无实际意义的意思。函数返回的None表示这个函数没有返回什么有意义的内容,也就是返回了空的意思。
③None的应用场景:A、用在函数无返回值上;B、用在if判断上,在if判断中,None等同于False。一般用于在函数中主动返回None,配合if判断做相关处理;C、用于声明无内容的变量上,定义变量,但暂时不需要变量有具体值,可以用None来代替。
def say_hi(): # 无return语句的函数返回值print("你好呀")result = say_hi() # 变量result接收say_hi函数的返回值
print(f"无返回值函数,返回的内容是:{result}") # None
print(f"无返回值函数,返回的内容类型是:{type(result)}") # <class 'NoneType'># None可以主动使用return返回,效果等同于不写return语句:
def say_hi2():print("你好呀")return None # 主动返回None的函数result = say_hi2()
print(f"无返回值函数,返回的内容是:{result}") # None
print(f"无返回值函数,返回的内容类型是:{type(result)}") # <class 'NoneType'># None用于if判断
def check_age(age):if age > 18:return "SUCCESS"else:return Noneresult = check_age(16)
if not result:# 进入if表示result是None值 也就是Falseprint("未成年,不可以进入")# None用于声明无初始内容的变量
name = None
因此,也可以根据函数的参数和返回值的有无对函数进行分类:①无参无返回值函数;②有参数无返回值函数;③无参有返回值函数;④有参有返回值函数;
4.4 函数的调用
定义:定义函数后,需要调用此函数才能执行到这个函数里的代码段。
语法:函数名(实际参数)
注意:函数必须是先定义,后使用。
4.5 函数执行流程
4.5.1 函数执行流程
①首先进入没有def开头的代码块r = add(1, 2),由于python内部没有内置add函数,则会去查询有没有用户自定函数,如果没有,就会报错- -函数名add不存在;
②如果有,调用add(x, y)函数,函数在add(1, 2)处中断,等待被调用函数运行完成并产生返回值时,才会执行r = add(1, 2)。
③接着检查函数的参数有没有传参,如果有,按照顺序将实参的值传递给形参,执行add(x, y)函数;
④再检查函数的参数有没有返回值,如果有,按返回值的结果给函数调用者 add(1,2),并用变量r接收;
⑤打印r的值,代码全部执行,程序结束。
4.5.2 函数的形参和实参
①形参出现在函数定义中,实参出现在函数调用中;
②调用时实参的值按照形参的顺序逐个对应传给形参,而不能由形参传回来给实参,即单向传递;
③调用函数时,编译系统临时给形参分配存储单元(实参与形参是不同单元存储)。调用结束后,形参单元被销毁,实参单元仍保留并维持原值;
4.6 函数的说明文档
问题:函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。可以给函数添加说明文档,辅助理解函数的作用。
解决:通过多行注释的形式,对函数进行说明解释,内容应写在函数体之前。规范说明如下图,在pycharm工具下写个多行注释后回车,会自动提供格式给开发者。
在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档。
4.7 函数的嵌套调用
定义:一个函数里面又调用了另外一个函数。
结果如下:
4.8 函数变量的作用域
定义:即变量的作用范围,说明变量在哪里可用,在哪里不可用。
分类:局部变量和全局变量。
4.8.1 局部变量
定义:定义在函数体内部的变量,即只在函数体内部生效。
举例:变量num是定义在testA函数内部的变量,在函数外部访问则立即报错。
作用:在函数体内部,临时保存数据,当函数调用完成后销毁局部变量。
4.8.2 全局变量
定义:定义在函数体外部的变量,在函数体内、外都能生效。
举例:变量num是定义在testA和testB函数外部的变量,在函数A、B都能使用
问题:testB函数内部修改全局变量num的值为200,如何修改程序?
结果:如果是直接在testB函数内部修改num = 200,只是定义了一个局部变量num,并不影响全局变量num的值。
解决:使用 global 变量
可以在函数内部声明变量为全局变量,如下所示:
4.9 综合案例
定义一个全局变量:money,用来记录银行卡余额(默认5000000);
定义一个全局变量:name,用来记录客户姓名(启动程序时输入);
定义如下的函数:
①查询余额函数
②存款函数
③取款函数
④主菜单函数
要求:
①程序启动后要求输入客户姓名
②查询余额、存款、取款后都会返回主菜单
③存款、取款后,都应显示一下当前余额
④客户选择退出或输入错误,程序会退出,否则一直运行
主菜单效果:
查询余额效果:
存、取款效果:
money = 5000000 # 定义一个全局变量:money,用来记录银行卡余额(默认5000000)
name = input("请输入您的姓名:") # 定义一个全局变量:name,用来记录客户姓名(启动程序时输入)def query(show_header): # 定义查询余额函数if show_header: # 取款、存款后应显示一下当前余额,调用query函数查询余额,要想不显示表头,调用函数传入False参数即可print("-------------查询余额------------")print(f"{name},您好,您的余额剩余:{money}元")def saving(num): # 定义存款函数global money # money在函数内部定义为全局变量money += numprint("-------------存款------------")print(f"{name},您好,您存款{num}元成功。")query(False)def get_money(num): # 定义取款函数global money # 定义global,使得money在函数内部定义为全局变量money -= numprint("-------------取款------------")print(f"{name},您好,您取款{num}元成功。")query(False) # 取款后应显示一下当前余额,调用query函数查询余额def main_menu(): # 定义主菜单函数print("-------------主菜单------------")print(f"{name},您好,欢迎来到黑马银行ATM。请选择操作:")print("查询余额\t[输入1]")print("存款\t\t[输入2]")print("取款\t\t[输入3]") # 通过\t制表符对齐输出print("退出\t\t[输入4]")return input("请输入您的选择:")# 只要ATM不退出程序,可以随便查询
while True: # 设置无限循环,确保程序不退出keyboard_input = main_menu() # 先显示主菜单if keyboard_input == "1":query(True) # 查询界面需要显示表头continue # 除了退出程序,其他步骤都是要返回到主界面,通过continue继续下一次循环,返回到主菜单elif keyboard_input == "2":num = int(input("您想要存多少钱?请输入:"))saving(num)continue # 查询余额、存款、取款后都会返回主菜单elif keyboard_input == "3":num = int(input("您想要取多少钱?请输入:"))get_money(num)continue # 查询余额、存款、取款后都会返回主菜单else: # 客户选择退出或输入错误,程序会退出,否则一直运行print("程序退出啦")break # 通过break退出循环
码字不易,如果大家觉得有用,请高抬贵手给一个赞让文章上推荐让更多的人看到吧,也可以评论提出意见让后面的文章内容越来越生动丰富。
四、python的函数基础--附代码案例相关推荐
- python常用代码入门-入门十大Python机器学习算法(附代码)
入门十大Python机器学习算法(附代码) 今天,给大家推荐最常用的10种机器学习算法,它们几乎可以用在所有的数据问题上: 1.线性回归 线性回归通常用于根据连续变量估计实际数值(房价.呼叫次数.总销 ...
- 混合整数规划MIP/线性规划LP+python(cplex库)实现 附代码
文章目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(docplex库) MIP的Python实现(ortool库) 喜欢的话请关注我们的微信公众号~<你好世界炼 ...
- 混合整数规划MIP/线性规划LP+python(ortool库)实现 附代码
文章目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(Ortool库) assert MIP的Python实现(docplex库) 喜欢的话请关注我们的微信公众号~&l ...
- Python科学绘图实例附代码
Python绘图精简实例附代码 作者:金良(golden1314521@gmail.com) csdn博客:http://blog.csdn.net/u012176591 Python绘图精简实例附代 ...
- python代码在线回归中怎么运行_手把手教你用Python进行回归(附代码、学习资料)...
原标题:手把手教你用Python进行回归(附代码.学习资料) 作者: GURCHETAN SINGH翻译:张逸校对:丁楠雅 本文共5800字,建议阅读8分钟. 本文从线性回归.多项式回归出发,带你用P ...
- 初识python之函数基础
课堂笔记: 1.什么是函数?函数相当于工具,需要事先准备好,在需要用时再使用. 2.如何使用函数?函数必须先定义.后调用. 3.函数的语法: # def 函数名(参数1,参数2...):# " ...
- 推荐系统入门(四):WideDeep(附代码)
推荐系统入门(四):Wide&Deep(附代码) 目录 推荐系统入门(四):Wide&Deep(附代码) 引言 点击率预估简介 FM它不香吗 1.Wide&Deep模型 2. ...
- Python 之 函数基础
函数基础 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个 ...
- python pow函数用法_Python代码中pow()函数具有哪些功能呢?
摘要: 下文讲述Python代码中pow()函数的功能说明,如下所示: pow函数功能说明 pow() 函数用于 计算 xy(x 的 y 次方) 的值 pow函数语法: import math mat ...
最新文章
- 快速排序(抽象理解,最快了解)
- breakdancer检测结构变异
- linux--vi 和vim 的区别
- phpmyadmin 查看sql历史记录
- 使用p3p跨域设置Cookie
- 数据库更改到Java环境中实现可持续和平
- linux tar进行归档压缩和解压
- 名不正则言不顺,言不顺则事不成
- AD PCB导出Gerber文件(非常详细的步骤)
- 浏览器扫码打开Android/iOS App
- linux patch 给文件打补丁,Linux补丁工具patch生成使用补丁用法示例
- Unity手机移动设备重力感应
- android inflate,Android inflate view的两种方式
- 五级自动驾驶分级_关于确保自动驾驶汽车安全的五件事
- 傻妞sillyGirl对接VLW微信机器人
- Java游戏脚本实现
- 编写函数比较字符串的大小
- 搭建spring-boot+vue前后端分离框架并实现登录功能
- 关于c++中vector的push_back、拷贝构造copy constructor和移动构造move constructor
- 量化投资学习——最优成交剩撤卖
热门文章
- B端体验度量衡-体验度量衡指标以及实施篇
- SNS:美图秀秀的社交化变革
- ERP管理软件中“集成”的七个管理思想[转]
- IC datasheet 查询网站
- c语言程序设计答案第6章,C语言程序设计答案(黄保和编)第6章
- linux视频采集软件,基于Video4Linux的视频图像采集实现 - 看看网
- C++ Primer读书摘要(二)
- 零基础入门学Python(十二)—— 魔法方法(上)
- 网络安全竞赛试题(1)A模块
- Greenplum【异常 02】使用Navicat的服务器监控工具解决Greenplum数据库锁表问题