python基础语法
程序员文章站
2022-03-26 10:28:47
文章目录主要内容:1.异常处理基本语句2.finally关键字的使用3.with关键字的使用4.自定义异常5.高级装饰器主要内容:1.异常处理基本语句在程序运行过程中,由于编码不规范等造成程序无法正常执行,此时程序就会报错。健壮性:很多编程语言都有异常处理机制def calc(a,b): return a/btry: x=calc(3,1) #如果程序出错会立刻跳转到except语句except: print('程序出错了')else: #如果...
主要内容:
1.异常处理基本语句
在程序运行过程中,由于编码不规范等造成程序无法正常执行,此时程序就会报错。健壮性:很多编程语言都有异常处理机制
def calc(a,b):
return a/b
try:
x=calc(3,1) #如果程序出错会立刻跳转到except语句
except:
print('程序出错了')
else: #如果程序没有出错会执行else里面的代码
print('打印的结果是:',x,sep='')
try……except 语句用来处理程序运行过程中的异常
try:
print(3/0)
file=open('xxx.txt')
print(file.read())
file.close()
except Exception as e:
# except (FileNotFoundError,ZeroDivisionError,KeyError) as e: #给异常取了个变量名e
print(e)
2.finally关键字的使用
finally的注意事项:一般情况下,一个函数只能执行一个return语句,但是如果函数里面有finally,finally里面的返回值会覆盖之前的返回值
file=open('F:/wdzp6.jpg','rb')
try:
while True:
content=file.read(1024)
print(content)
if not content:
break
finally:
print('文件被关闭了')
3.with关键字的使用
with关键字会帮我们关闭文件,不需要手动关闭文件。
with我们称之为上下文管理器,很多需要手动关闭的连接,比如说文件连接、socket连接、数据库连接都能使用with关键字自动关闭连接
try:
with open('xxx.txt') as file:
file.read() #不需要手动关闭文件
except FileNotFoundError:
print('文件未找到')
with语句后面的结果对象,需要重写__enter__和__exit__魔术方法。当进入with代码块时会自动调用__enter__方法里面的代码,当with代码块执行完成以后,会自动调用__exit__方法
class demo(object):
def __enter__(self):
print('__enter__方法被调用了')
return 'hello'
def __exit__(self, exc_type, exc_val, exc_tb):
print('__exit__方法被调用了')
pass
def Create_obj():
x=demo()
return x
#c=Create_obj().__enter__()
with Create_obj() as c:
print(c)
# __enter__方法被调用了
# hello
# __exit__方法被调用了
4.自定义异常
系统内置的异常:
(1)ZeroDivisionError:除以0的异常
(2)FileNotFoundError:文件不存在的异常
(3)FileExistsError:多次创建同名的文件夹os.mkdir(‘xxx.txt’)
(4)ValueError:int(‘hello’)
(5)KeyError:a_dict={“name”:“张三”} a_dict[“age”]
(6)SyntaxError:print(‘hello’,‘good’)
(7)IndexError:names=[‘张三’,‘李四’,‘王五’] print(names[7])
class MyError(Exception):
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return '长度必须要在{}和{}之间'.format(self.a, self.b)
password = input('请输入你的密码:')
m = 6
n = 12
if len(password)>=m and len(password)<=n:
print('密码正确')
else:
#使用raise关键字可以抛出一个异常
raise MyError(m, n)
5.高级装饰器
(1)装饰器的回顾:
def can_play(fn):
def inner(name,game,**kwargs):
clock=kwargs.get('clock',21)
if clock>=21:
print('太晚了,不能玩游戏')
else:
fn(name,game)
return inner
@can_play
def play_game(name,game):
print(name,'正在玩',game,sep='')
play_game('张三','王者荣耀',clock=18)
(2)高级装饰器:
def can_play(clock):
def handle_action(fn):
def do_action(name,game):
if clock>21:
print('太晚了,不能玩游戏')
else:
fn(name,game)
return do_action
return handle_action
@can_play(23)
def play_game(name,game):
print(name,'正在玩',game,sep='')
play_game('张三','王者荣耀')
本文地址:https://blog.csdn.net/weixin_43497769/article/details/110621941