python之函数的使用及异常处理2021.1.30
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python之函数的使用及异常处理2021.1.30,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8991字,纯文字阅读大概需要13分钟。
内容图文
![python之函数的使用及异常处理2021.1.30](/upload/InfoBanner/zyjiaocheng/608/89d852af4b5546daa4c939e998fedd88.jpg)
python之函数的使用
?. 函数的作?
函数就是将?段具有独?功能的代码块 整合到?个整体并命名,在需要的位置调?这个名称即可完成对应的需求。 函数在开发过程中,可以更?效的实现代码重?。
?. 函数的使?步骤
2.1 定义函数
def 函数名(参数): 代码1 代码2 ......
2.2 调?函数
函数名(参数)
注意: 1. 不同的需求,参数可有可?。 2. 在Python中,函数必须先定义后使?。
2.3 快速体验
需求:复现ATM取钱功能。 1. 搭建整体框架(复现需求)print('密码正确登录成功') # 显示"选择功能"界? print('查询余额完毕') # 显示"选择功能"界? print('取了2000元钱') # 显示"选择功能"界?2. 确定“选择功能”界?内容
print('查询余额') print('存款') print('取款')3. 封装"选择功能" 注意:?定是先定义函数,后调?函数。
# 封装ATM机功能选项 -- 定义函数 def select_func(): print('-----请选择功能-----') print('查询余额') print('存款') print('取款') print('-----请选择功能-----')
4. 调?函数
在需要显示“选择功能”函数的位置调?函数。print('密码正确登录成功') # 显示"选择功能"界? -- 调?函数 select_func() print('查询余额完毕') # 显示"选择功能"界? -- 调?函数 select_func() print('取了2000元钱') # 显示"选择功能"界? -- 调?函数 select_func()
三.函数的参数作?
思考:完成需求如下:?个函数完成两个数1和2的加法运算,如何书写程序?# 定义函数 def add_num1(): result = 1 + 2 print(result) # 调?函数 add_num1()思考:上述add_num1函数只能完成数字1和2的加法运算,如果想要这个函数变得更灵活,可以计算任何?户指定的两个数字的和,如何书写程序? 分析:?户要在调?函数的时候指定具体数字,那么在定义函数的时候就需要接收?户指定的数字。函数调?时候指定的数字和定义函数时候接收的数字即是函数的参数。
# 定义函数时同时定义了接收?户数据的参数a和b,a和b是形参 def add_num2(a, b): result = a + b print(result) # 调?函数时传?了真实的数据10 和 20,真实数据为实参 add_num2(10, 20)
四.函数的返回值作?
例如:我们去超市购物,?如买烟,给钱之后,是不是售货员会返回给我们烟这个商品,在函数中,如果需要返回结果给?户需要使?函数返回值。def buy(): return '烟' # 使?变量保存函数返回值 goods = buy() print(goods)4.1 应? 需求:制作?个计算器,计算任意两数字之和,并保存结果。
def sum_num(a, b): return a + b # ?result变量保存函数返回值 result = sum_num(1, 2) print(result)
五.函数的说明?档
思考:定义?个函数后,程序员如何书写程序能够快速提示这个函数的作?? 答:注释 思考:如果代码多,我们是不是需要在很多代码中找到这个函数定义的位置才能看到注释?如果想更?便的查看函数的作?怎么办? 答:函数的说明?档函数的说明?档也叫函数的?档说明。
5.1 语法
定义函数的说明?档def 函数名(参数): """ 说明?档的位置 """ 代码 ......查看函数的说明?档
help(函数名)5.2 快速体验
def sum_num(a, b): """ 求和函数 """ return a + b help(sum_num)
六.函数嵌套调?
所谓函数嵌套调?指的是?个函数???调?了另外?个函数。- 示例
def testB(): print('---- testB start----') print('这?是testB函数执?的代码...(省略)...') print('---- testB end----') def testA(): print('---- testA start----') testB() print('---- testA end----') testA()
- 执?流程
如果函数A中,调?了另外?个函数B,那么先把函数B中的任务都执?完毕之后才会回到上次 函数A执?的位置。
七. 变量作?域
变量作?域指的是变量?效的范围,主要分为两类:局部变量和全局变量。- 局部变量
def testA(): a = 100 print(a) testA() # 100 print(a) # 报错:name 'a' is not defined
变量a是定义在 testA 函数内部的变量,在函数外部访问则?即报错。局部变量的作?:在函数体内部,临时保存数据,即当函数调?完成后,则销毁局部变量。
- 全局变量
# 定义全局变量a a = 100 def testA(): print(a) # 访问全局变量a,并打印变量a存储的数据 def testB(): print(a) # 访问全局变量a,并打印变量a存储的数据 testA() # 100 testB() # 100
思考: testB 函数需求修改变量a的值为200,如何修改程序?
a = 100思考:在 testB 函数内部的 a = 200 中的变量a是在修改全局变量 a 吗? 答:不是。观察上述代码发现,15?得到a的数据是100,仍然是定义全局变量a时候的值,?没有返回testB 函数内部的200。综上: testB 函数内部的 a = 200 是定义了?个局部变量。 思考:如何在函数体内部修改全局变量?
def testA(): print(a)
def testB(): a = 200 print(a)
testA() # 100 testB() # 200 print(f'全局变量a = {a}') # 全局变量a = 100
a = 100 def testA(): print(a) def testB(): # global 关键字声明a是全局变量 global a a = 200 print(a)
testA() # 100 testB() # 200 print(f'全局变量a = {a}') # 全局变量a = 200
八. 多函数程序执?流程
?般在实际开发过程中,?个程序往往由多个函数(后?知识中会讲解类)组成,并且多个函数共享某些数据,如下所示:- 共?全局变量
# 1. 定义全局变量 glo_num = 0
def test1(): global glo_num # 修改全局变量 glo_num = 100
def test2(): # 调?test1函数中修改后的全局变量 print(glo_num) # 2. 调?test1函数,执?函数内部代码:声明和修改全局变量 test1()
# 3. 调?test2函数,执?函数内部代码:打印 test2() # 100
- 返回值作为参数传递
def test1(): return 50
def test2(num): print(num)
# 1. 保存函数test1的返回值 result = test1()
# 2.将函数返回值所在变量作为参数传递到test2函数 test2(result) # 50
九. 函数的返回值
思考:如果?个函数如些两个return (如下所示),程序如何执??def return_num(): return 1 return 2答:只执?了第?个return,原因是因为return可以退出当前函数,导致return下?的代码不执?。 思考:如果?个函数要有多个返回值,该如何书写代码?
result = return_num() print(result) # 1
def return_num(): return 1, 2
result = return_num() print(result) # (1, 2)
注意: 1. return a, b 写法,返回多个数据的时候,默认是元组类型。 2. return后?可以连接列表、元组或字典,以返回多个值。
十. 函数的参数
10.1 位置参数
位置参数:调?函数时根据函数定义的参数位置来传递参数。def user_info(name, age, gender): print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')
user_info('TOM', 20, '男')
注意:传递和定义参数的顺序及个数必须?致。
10.2 关键字参数
函数调?,通过“键=值”形式加以指定。可以让函数更加清晰、容易使?,同时也清除了参数的顺序需求。def user_info(name, age, gender): print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')注意:函数调?时,如果有位置参数时,位置参数必须在关键字参数的前?,但关键字参数之间不存在 先后顺序。
user_info('Rose', age=20, gender='?') user_info('?明', gender='男', age=16)
10.3 缺省参数
缺省参数也叫默认参数,?于定义函数,为参数提供默认值,调?函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调?)。def user_info(name, age, gender='男'): print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')注意:函数调?时,如果为缺省参数传值则修改默认参数值;否则使?这个默认值。
user_info('TOM', 20) user_info('Rose', 18, '?')】
十一. 函数应?
11.1 打印图形
1. 打印?条横线def print_line(): print('-' * 20) print_line()2. 打印多条横线
def print_line(): print('-' * 20) def print_lines(num): i = 0 while i < num: print_line() i += 1 print_lines(5)
11.2 函数计算
1. 求三个数之和def sum_num(a, b, c): return a + b + c result = sum_num(1, 2, 3) print(result) # 6
2. 求三个数平均值
def average_num(a, b, c): sumResult = sum_num(a, b, c) return sumResult / 3 result = average_num(1, 2, 3) print(result) # 2.0
python之异常处理
?. 了解异常
当检测到?个错误时,解释器就?法继续执?了,反?出现了?些错误的提示,这就是所谓的"异常"。 例如:以 r ?式打开?个不存在的?件。open('test.txt', 'r')
?. 异常的写法
2.1 语法
try: 可能发?错误的代码 except: 如果出现异常执?的代码
2.2 快速体验
需求:尝试以 r 模式打开?件,如果?件不存在,则以 w ?式打开。try: f = open('test.txt', 'r') except: f = open('test.txt', 'w')
2.3 捕获指定异常
2.3.1 语法try: 可能发?错误的代码 except 异常类型: 如果捕获到该异常类型执?的代码2.3.2 体验
try: print(num) except NameError: print('有错误')
注意: 1. 如果尝试执?的代码的异常类型和要捕获的异常类型不?致,则?法捕获异常。 2. ?般try下?只放??尝试执?的代码。2.3.3 捕获多个指定异常 当捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使?元组的?式进?书写。
try: print(1/0) except (NameError, ZeroDivisionError): print('有错误')2.3.4 捕获异常描述信息
try: print(num) except (NameError, ZeroDivisionError) as result: print(result)2.3.5 捕获所有异常 Exception是所有程序异常类的?类。
try: print(num) except Exception as result: print(result)
2.4 异常的else
else表示的是如果没有异常要执?的代码。try: print(1) except Exception as result: print(result) else: print('我是else,是没有异常的时候执?的代码')
2.5 异常的finally
fifinally表示的是?论是否异常都要执?的代码,例如关闭?件。try: f = open('test.txt', 'r') except Exception as result: f = open('test.txt', 'w') else: print('没有异常,真开?') finally: f.close()
三. 异常的传递
体验异常传递 需求: 1. 尝试只读?式打开test.txt?件,如果?件存在则读取?件内容,?件不存在则提示?户即可。 2. 读取内容要求:尝试循环读取内容,读取过程中如果检测到?户意外终?程序,则 except 捕获异常并提示?户。import time try: f = open('test.txt') try: while True: content = f.readline() if len(content) == 0: break time.sleep(2) print(content) except: # 如果在读取?件的过程中,产?了异常,那么就会捕获到 # ?如 按下了 ctrl+c print('意外终?了读取数据') finally: f.close() print('关闭?件') except: print("没有这个?件")
四. ?定义异常(拓展)
在Python中,抛出?定义异常的语法为 raise 异常类对象 。 需求:密码?度不?,则报异常(?户输?密码,如果输?的?度不?3位,则报错,即抛出?定义异常,并捕获该异常)。# ?定义异常类,继承Exception class ShortInputError(Exception): def __init__(self, length, min_len): self.length = length self.min_len = min_len # 设置抛出异常的描述信息 def __str__(self): return f'你输?的?度是{self.length}, 不能少于{self.min_len}个字符' def main(): try: con = input('请输?密码:') if len(con) < 3: raise ShortInputError(len(con), 3) except Exception as result: print(result) else: print('密码已经输?完成')
main()
内容总结
以上是互联网集市为您收集整理的python之函数的使用及异常处理2021.1.30全部内容,希望文章能够帮你解决python之函数的使用及异常处理2021.1.30所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。