欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

相关标签: python