python常出现的错误,常见的python报错
本文主要介绍Python错误异常模块的概要。编程过程中难免会遇到错误信息。Python中的错误信息有很多种,最常见的两种是语法错误和逻辑错误。下面总结一下那些常见的例外,你的朋友可以参考一下。
00-1010错误和异常语法错误异常处理抛出异常模块前言:.
本文主要讲两个方面,错误和异常以及模块。编程中难免会遇到错误信息。Python中有很多种错误信息。两个常见的是语法错误和逻辑错误。逻辑错误种类繁多,占据了异常的大部分。下面简单介绍一下这两个概念的相关知识。
目录
错误和异常
语法错误在英语中表示为SyntaxError,后跟一些关于错误的解释性信息,以便您可以方便地找到语句中的bug,如下所示:
[5]in : print(《奶糖猫》)
文件“ipython-input-5-d5b793a8884b”,第1行
print(naitangmao)^
syntax error : eolwhilescanningstringliteral
语法错误,顾名思义,就是你的代码语句中的错误。比如上面这句话的错误就是少了一个引号。出现错误后,解释器会给出文件名和错误的行号,错误行下面有一个 。这将提示您代码错误的位置通常位于箭头的前面。这些提示将帮助作者尽快找出错误。
语法错误
有时候一行代码可能没有语法错误,但是执行的时候解释器会报红。这种错误信息可以称为异常。比起语法错误,种类更多,常见的例外也更多。
举两个简单的例子:
在[6]:打印(1/0)
-
zerodivisionerrrortraceback(mostrecentcalllast)
ipython-input-6-2fc 232d 1511输入模块
-1打印(1/0)
zerodivisionerror : divisionbyzero
大家都知道0不能作为分母出现,所以Python会给出一个ZeroDivisionError,提醒你这是一个零除法错误。
在[9]:1 1 中
-
TypeErrorTraceback(mostrecentcalllast)
ipython-input-9-d3bd 1e 37 a 107 in模块
- 11 1
type error :不支持:“int”和“str”的perandtype
对整形后的字符串没有加法运算,解释器分析后会给出TypeError。这是一个类型错误,后面会给出错误的解释。
异常
对于Python解释器来说,如果程序的某个部分出现异常,那么它背后的代码就不会运行。然而,Python中有处理异常的方法,因此异常不会被报告为红色,从而帮助整个程序完成运行。这种行为被称为捕获异常,它是通过try.除了陈述。
在[11]中: a=1;b=2
[12]:try:
.打印(a b)
.异常类型错误:
.print(类型错误!)
类型不对!
g>捕获异常实现的过程:
- 1.执行try和except关键字之间的部分
- 2.如果没有异常发生,except子句在try语句执行完毕后就被忽略了。
- 3.如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略。如果异常匹配于except关键字后面指定的异常类型,就执行对应的except子句。然后继续执行try/except语句之后的代码。
- 4.如果发生了一个异常,在except子句中没有与之匹配的分支,它就会传递到上一级try语句中。如果最终仍找不到对应的处理语句,它就成为一个未处理异常,终止程序运行,显示提示信息。
为了避免第4条情况产生,在except语句中可以使用所有异常的父类Exception,这样就囊括了所有异常可能发生的状况:
In [15]: try:...: print(a+b)
...: except Exception as e:
...: print(e)
unsupported operand type(s) for +: int and str
抛出异常
利用raise语句可以主动抛出一个异常,但抛出的异常必须是要继承于Exception的异常类或者异常示例。
In [16]: raise NameError(naitangmao)---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-16-b751158801b2> in <module>
----> 1 raise NameError(naitangmao)
NameError: naitangmao
除此上面介绍之外,用户还可以根据自己的需求自己定义异常,不再过多介绍,建议掌握的部分是每种异常出现的原因以及异常处理的方法。
模块
第二部分就是模块,我们有时可能会在不同文件之间利用同一个函数,笨一点的做法就是copy来copy去,Python提供了一个机制可以在将一个文件中的内容导入另一个文件中使用,这样的文件就可以称为模块,需要注意的是并不是任何一个文件都可以当做模块,而必须是包含Python定义和声明的文件。
举一个简单的小例子帮助理解上面这段话,首先可以创建一个odd_num.py文件,然后这个文件中只有一个函数,功能是实现过滤掉一个范围内的偶数:
In [18]: def odd(n):...: result = []
...: for i in range(n):
...: if i % 2 != 0:
...: result.append(i)
...: return result
然后我们可以在另一个文件中导入这个模块,如果我们想使用这个函数的话,就可以通过模块名.函数名的方法调用该函数,如下:
In [20]: import odd_numIn [21]: odd_num.odd(20)
Out[21]: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
如果你只想用一个模块中的某个子模块,那么在导入时就可以指明需要导入的部分,这样子模块就可以单独使用,不必在以模块名.函数名的形式:
In [22]: from odd_num import oddIn [23]: odd(20)
Out[23]: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
如果你还想偷懒的话,可以利用'*'的形式导入,这种写法是导入一个模块中的所有子模块:
In [24]: from odd_num import *
这种方法往往是不被推荐的,因为会让代码的可读性变差。
如果你有很多自定义的模块,为了更加规范、易找,那么你就可以将这些模块存入一个"包"中,需要注意的是,这个包中比如要有一个名为__init__.py的文件,这个文件可以为空但必须存在,然后导入包中模块的方式就是包名.模块名。
Python本身也有自带的模块库,有一部分模块是内置于解释器之中,然后用户可以直接访问这类模块的接口,很大程度上提高了效率,比如time、sys等等。如果你对于一个模块比较陌生,你可以利用dir()函数搜索某个模块的定义,返回的结果是一个列表,其中包括模块内的方法、可供调用的接口等等。
In [24]:dir(time)Out[24]:[_STRUCT_TM_ITEMS, __doc__, __loader__,__name__,__package__,__spec__,altzone,asctime,ctime,daylight,
get_clock_info,gmtime,localtime,mktime,monotonic,monotonic_ns,perf_counter,perf_counter_ns,process_time,
process_time_ns,sleep,strftime,strptime,struct_time,thread_time,thread_time_ns,time,time_ns,timezone,tzname]
综上是对错误和异常、模块两方面常用知识的一些概括!
到此这篇关于Python错误+异常+模块总结的文章就介绍到这了,更多相关Python异常内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。