欢迎访问宙启技术站
智能推送

Python中的异常处理与函数

发布时间:2023-06-05 12:37:58

Python是一门易学易用的简单语言,但是在使用Python编程的时候,会遇到各种各样的问题,这时候就需要异常处理技术的帮助。在Python中,异常被视为一个程序执行过程中的错误,当程序发生错误时,Python会抛出异常并停止运行当前代码,如果不加以处理,程序就会中断。

异常处理的一般格式如下:

try:

    # 运行可能出错的代码块

except ExceptionClass1:

    # 异常处理代码块1

except ExceptionClass2:

    # 异常处理代码块2

else:

    # 如果没有异常,则运行此代码块

finally:

    # 无论是否有异常,都会运行此代码块

其中,try块是需要进行异常处理的代码块,except块则是程序当中可能出现的异常处理方式,else块是在try块代码正常处理后要执行的语句,finally块是最终要执行的代码块。

举个例子:如果我们想要打开一个不存在的文件,并读取其中的内容,那么程序将会抛出FileNotFoundError错误。如果我们使用异常处理来应对这个错误,代码可以写成这个样子:

try:

    with open("nonexistent.txt", "r") as myfile:

        print(myfile.read())

except FileNotFoundError:

    print("文件不存在")

else:

    print("文件已经被打开")

finally:

    print("程序执行完毕")

在这个例子当中,我们使用了try-except语句来进行异常处理。首先,我们打开文件,读取其中的内容,但是由于文件不存在,代码会抛出FileNotFoundError错误。接下来,我们使用了except块来捕捉这个错误,打印出"文件不存在"。此处还有一个else块,它会在try块代码正常处理后要执行。最后,finally块会被执行,无论是出现异常还是正常退出,都会被执行。在这里,我们打印出了"程序执行完毕"。

在Python中,还有一些内置的异常类可以供我们使用:

1. ArithmeticError(算术错误):当用户试图执行非法算术操作时抛出。

2. AssertionError(断言错误):当assert语句失败时抛出。

3. AttributeError(属性错误):在尝试访问不存在的对象属性时抛出。

4. EOFError(文件结束错误):在输入文件结尾未能读取数据时抛出。

5. ImportError(导入错误):在无法导入模块或子模块时抛出。

6. IndexError(索引错误):在访问序列已超出范围时抛出。

7. KeyError(关键字错误):在字典中查找一个不存在的关键字时抛出。

8. KeyboardInterrupt(键盘中断异常):当用户想中断程序的执行时抛出。

9. MemoryError(内存错误):内存溢出时抛出。

10. NameError(名称错误):在程序中找不到局部或全局名称时抛出。

11. OSError(操作系统错误):操作系统相关的问题时抛出。

12. OverflowError(溢出错误):计算结果太大无法表示时抛出。

13. RuntimeError(运行时错误):一般与raise语句一起使用,用于在程序中引入自己的错误。

14. StopIteration(停止迭代异常):当没有更多的项目时,调用next()函数时抛出。

15. SyntaxError(语法错误):在语法错误时抛出。

16. IndentationError(缩进错误):在缺少正确缩进时抛出。

17. SystemError(系统错误):当Python遇到内部错误时抛出。

18. TypeError(类型错误):当操作或函数应用于不合适类型的对象时抛出。

19. UnboundLocalError(未绑定局部错误):当访问不可调用的局部变量时抛出。

20. UnicodeError(Unicode错误):当Unicode字符处理出错时抛出。

除了异常处理,Python还可以定义和使用函数。Python中的函数定义格式如下:

def function_name(parameters):

    # 函数体

    return value

其中,def是定义函数的关键字,function_name是函数的名称,parameters是函数的输入参数,函数体是函数的具体实现代码,return表示函数的输出值。

举个例子,如果我们要定义一个函数,描述一个学生的姓名和年龄,并输出这个学生的信息,代码可以写成这个样子:

def student_info(name, age):

    print("学生姓名:", name)

    print("学生年龄:", age)

调用这个函数的方式如下:

student_info("张三", 20)

这样就可以输出学生姓名为"张三",年龄为20的学生信息了。

在Python中,还可以使用默认参数、可变参数和关键字参数等特殊类型的函数参数。默认参数是已经在函数定义中指定的参数值,当没有为该参数提供值时,将使用默认值。举个例子,如果我们要定义一个函数,输出一个人的名字以及年龄(如果没有指定年龄,则默认年龄为18岁),代码可以写成这个样子:

def person_info(name, age=18):

    print("人名:", name)

    print("人年龄:", age)

这样,如果我们调用这个函数时,只指定了人名,那么默认年龄为18岁:

person_info("张三")

输出结果为:

人名: 张三

人年龄: 18

可变参数是指一个函数可以接受任意数量的输入参数,定义方式为在函数参数前加*号。这里要注意,*args表示包含所有参数的元组。举个例子,如果我们要定义一个函数,用于计算任意数量的数字的和,代码可以写成这个样子:

def sum(*args):

    result = 0

    for i in args:

        result += i

    return result

这样,我们可以输入任意数量的参数,函数会对这些数字取和:

print(sum(1, 2, 3, 4, 5))

输出结果为:

15

关键字参数是指用于标识某个参数的名称和值,根据名称来匹配参数,定义方式为在函数参数前加**号。举个例子,如果我们要定义一个函数,用于打印各个学科的分数(包括科目名称和分数),代码可以写成这个样子:

def subject_score(**kwargs):

    for subject, score in kwargs.items():

        print(subject, ":", score)

这里要注意,**kwargs表示包含所有关键字参数的字典。这样,我们可以输入关键字参数,函数会打印各个科目的成绩:

subject_score(语文=80, 数学=90, 英语=85)

输出结果为:

语文 : 80

数学 : 90

英语 : 85

Python的异常处理和函数在实际工程应用中非常重要,正确使用这些功能可以帮助我们应对各种复杂的情况,让程序更加健壮。