首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【愚公系列】2021年12月 Python教学课程 18-异常处理

这些导致程序在运行过程中出现异常中断和退出的错误,我们统称为异常。大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。...异常类型作为信息的一部分也会被打印出来,例如 ZeroDivisionError,NameError 和 TypeError。...如果 try 嵌套,那么如果里面的 try 没有捕获到这个异常,那么外面的 try 接收到这个异常,然后进行处理。...异常名 解释 AttributeError 试图访问一个对象没有属性 IOError 输入/输出异常 ImportError 无法引入模块或包;多是路径问题或名称错误 IndentationError...语法错误 TypeError 传入对象的类型与要求的不符合 UnboundLocalError 试图访问一个还未被设置的局部变量 ValueError 传入一个调用者不期望的,即使的类型是正确的

64120

流畅的 Python 第二版(GPT 重译)(六)

③ 第一个效果:Pixel的实例没有__dict__。 ④ 正常设置p.x和p.y属性。 ⑤ 第二个效果:尝试设置一个未在__slots__中列出的属性引发AttributeError。...在示例 12-5 中调用dir(slice)显示一个indices属性,这个属性实际上是一个非常有趣鲜为人知的方法。...② 将新分配给 v.x。这应该引发异常。 ③ 读取 v.x 显示 10。 ④ 然而,矢量组件没有发生变化。 你能解释发生了什么吗?...特别是,如果向矢量组件数组中没有尝试 v.x 返回 10,那么为什么第二次这样?如果你一时不知道,那就仔细研究一下在示例 12-8 之前给出的 __getattr__ 解释。...在选择与 AttributeError 一起显示错误消息时,我的第一个检查对象是内置的 complex 类型的行为,因为它们是不可变的,并且有一对数据属性,real 和 imag。

10210
您找到你想要的搜索结果了吗?
是的
没有找到

pickle —— Python 对象序列化(python=3.8)

这样做的好处是没有外部标准给该格式强加限制,比如 JSON 或 XDR(不能表示共享指针)标准;这也意味着非 Python 程序可能无法重新读取 pickle 打包的 Python 对象。 ...Pickler 对象默认并没有 dispatch_table 属性,该对象默认使用 copyreg 模块中定义的全局 dispatch 表。...尝试打包不能被打包的对象抛出 PicklingError 异常,异常发生时,可能有部分字节已经被写入指定文件中。...如果对象没有此方法,则这个元素必须是字典类型,并会被添加至 dict 属性中。  可选元素,一个返回连续项的迭代器(而不是序列)。...2 这就是为什么 lambda 函数不可以被打包:所有的匿名函数都有同一个名字:。  3 抛出的异常有可能是 ImportError 或 AttributeError,也可能是其他异常。

1.2K20

11 . Python3之异常,调试和测试

异常就是程序运行时发生错误的信号(在程序出现错误时,产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中错误出发的异常如下: 而错误分成两种: 1.语法错误(... 异常处理结构: try: # 会出现异常的代码块 except 异常类型 as 异常别名: # 异常处理逻辑 else: # 没有出现异常执行该分支 finally: # 无论是否出现异常都会执行该分支...常用异常 异常名称 描述 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包...除(或取模)零 (所有数据类型) AssertionError 断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError...,才应该加上try…except 记录错误 如果不捕获错误,自然可以让Python解释器来打印出错误堆栈,程序也就结束了,既然我们能捕获错误,就可以把错误堆栈打印出来,然后分析错误原因,同时让程序继续执行下去

1.4K40

Python 3 之 运算符重载详解

多数重载方法只用在需要对象行为表现得就像内置类型一样的高级程序中。然而__init__构造函数常出现在绝大多数类中。我们已见到过__init__初始定义构造函数,以及上表中的一些其他的方法。...(attrname) AttributeError: name 在这里,empty类和其实例X本身并没有属性,所以对X.age的存取转至__getattr__方法,self则赋值为实例X,而attrname...对于类不知道该如何处理的属性,这个__getattr__引发内置的 AttributeError异常,高数Python,那真的是未定义的属性。请求X.name时,引发错误。...其次,根据一个容器的字符串转换逻辑,__str__的用户友好的显示可能只有当对象出现在一个打印操作顶层的时候才应用,嵌套到交大对象中的对象可能用其__repr__或默认方法打印。...__和__len__ 正如前面所提到的,类可能也定义了赋予其实例布尔特性的方法……在布尔环境中,Python首先尝试__bool__来获取一个直接的布尔,然后,如果没有该方法,就尝试__len__类根据对象的长度确定一个真值

3.9K10

Python基础 | 新手学Python时常见的语法错误和异常

解析器输出出现语法错误的那一行,并显示一个“箭头”,指向这行里面检测到的第一个错误。...AttributeError:当试图使用一个对象没有属性或方法时 In [8]: dic = {'key1':'var1', ...: 'key2':'var2'} In [9...ValueError:当操作或函数接收到具有正确类型不适合的参数 In [17]: num = int(input('请输入一个整数:')) 请输入一个整数:a Traceback (most recent...断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类 IOError 输入/输出操作失败...) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象 (没有属性) UnboundLocalError

7K41

流畅的 Python 第二版(GPT 重译)(十三)

类作为对象 像 Python 中的大多数程序实体一样,类也是对象。每个类在 Python 数据模型中都有一些属性,这些属性在《Python 标准库》的“内置类型”章节中的 “4.13....dict 属性名称到的映射。可调用对象变成方法,就像我们在“方法是描述符”中看到的那样。其他变成类属性。...如果没有,设置movie.director = 'Greta Gerwig'将成功,director属性不会以任何方式被检查,并且不会出现在__repr__中,也不会包含在_asdict返回的dict...如果您这样做并且达到了截止日期,代码可能包含微妙的错误。即使没有已知的错误,您也应该将这种方法视为技术债务,因为它很难理解和维护。...它们中没有一个旨在明确出现在用户代码中。我们可能将它们视为实现细节。 尽管您可以使用元类进行一些非常古怪的元编程,最好遵循最少惊讶原则,以便大多数用户确实将元类视为实现细节。

12510

python异常报错详解

断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类 IOError 输入/输出操作失败...异常AttributeError 属性引用(请参阅属性引用)或赋值失败时引发。(当一个对象根本不支持属性引用或属性赋值时,TypeError被提出。)...当函数返回与系统相关的错误(不是非法参数类型或其他偶然错误)时引发。的errno属性是从一个数字错误代码errno,并且strerror属性是相应的字符串,如将被C函数被打印perror()。...异常SystemError 当翻译发现内部错误时,提出了这种情况,情况并不那么严重,导致它放弃了所有的希望。相关联的是一个字符串,表示出现错误(低级别)。...异常UnboundLocalError 当引用函数或方法中的局部变量时引用,没有绑定到该变量。这是一个子类 NameError。

4.6K20

解决AttributeError: ‘NoneType‘ object has no attribute ‘array_interface‘

如果我们传递给这些函数或方法的数组对象为None,就会出现"AttributeError: 'NoneType' object has no attribute 'array_interface'"的错误...这是因为None是Python中表示空对象的特殊,它没有__array_interface__属性,而NumPy函数和方法需要使用这个属性来进行数组操作。...有些NumPy函数返回None作为特殊标记,表示没有有效的结果。...总结: 当出现"AttributeError: 'NoneType' object has no attribute 'array_interface'"的错误时,我们应该检查传递给NumPy函数和方法的数组对象是否为...下面是关于​​​None​​的一些重要特点和使用情况:表示空对象:​​None​​在Python中用于表示没有指向任何对象的情况。

64800

Python程序员最常犯的10个错误,你中招了吗?

1:滥用表达式作为函数参数的默认 Python允许开发者指定函数参数的默认,这也是Python的一大特色,当默认可变时,可能会给开发者带来一些困扰。...因此,在上述代码中,因为在类C中没有找到属性x,它就会从父类中查找x的(尽管Python支持多重继承,上述代码只存在一个父类A)。换句话说,C没有独立于类A的属于自己的x。...事实上,Python的这种工作方式较为独特,导致一些编程错误,例如: >>> x = 10 >>> def foo(): ... x += 1 ......原因和上一个案例中出现的问题相似,这里的错误更加细微。函数foo1没有对变量lst进行赋值操作,而函数foo2有赋值操作。...此时,还未对变量b.x进行定义,所以出现AttributeError异常。 稍微修改下b.py,即在g()函数内部导入a.py就可以解决上述问题。

99110

C ++ 中不容忽视的 25 个 API 错误设计!

客户端可以用一些你以前没有测试过的任意类型来实例化你的模板,并且遇到奇怪的失败。 如何解决这个问题?...例如,如果你为所有参数(如下所示)提供默认,则客户端可能错误地使用不具有逻辑意义的组合,例如提供不带Y的X。...虽然这面向面向对象设计和封装,这在实践中很有用。如果你正在开发一个包含许多组件的大型系统,并希望将一个部件中的功能仅暴露给选定的客户端(测试类),这可以使事情变得更加容易。...打破头文件之间的循环依赖关系是很有用的。 使用预编译的头文件也可以显著减少构建时间。 错误#15:对外来(不是你自己的)对象类型使用前向声明 为什么这是一个错误?...Windows子系统被打包为DLL的集合是有原因的,这使得这些Windows更新或修补变得轻而易举,好吧,也许不是真的,这是因为其他问题。

1.5K20

详解反调试技术

这些API中有些是专门用来检测调试器的存在的,而另外一些API是出于其他目的而设计的,但也可以被改造用来探测调试器的存在。其中很小部分API函数没有在微软官方文档显示。...一旦出现错误,MSDN中往往会指出请用GetLastError()函数来获得错误原因。恶意代码可以使用异常来破坏或者探测调试器。...如果进程没有被调试器附加,调用OutputDebugString函数失败,错误重新设置,因此GetLastError获取的错误码应该不是我们设置的任意。...这个属性总与ForceFlags属性大致相同,通常情况下Flags与2进行比较。...DR6、DR7用于记录Dr0-Dr3中断点的相关属性。如果没有硬件断点,那么DR0、DR1、DR2、DR3这4个寄存器的都为0。

2.1K40

Python下划线5种含义代码实例解析

让我们来看看这个列表,并寻找我们的原始变量名称foo,_bar和__baz – 我保证你注意到一些有趣的变化。 self.foo变量在属性列表中显示为未修改为foo。 self....__baz = 'overridden' 现在,你认为foo,_bar和__baz的出现在这个ExtendedTest类的实例上吗?...__baz AttributeError: "'ExtendedTest' object has no attribute '__baz'" 等一下,当我们尝试查看t2 .__ baz的时,为什么我们会得到...事实证明,这个对象甚至没有__baz属性: dir(t2) ['_ExtendedTest__baz', '_Test__baz', '__class__', '__delattr__', '_...慢慢来,试试这篇文章中的一些例子。 让这些概念完全沉浸下来,以便你能够理解名称修饰的总体思路,以及我向您展示的一些其他的行为。如果有一天你和它们不期而遇,你知道在文档中按什么来查。

67920

Python3内置函数表.md

获取对象属性 print(getattr(test,'x')) #1024 print(getattr(test,'e','实例化对象没有 e 属性')) #有实例化对象没有 e 属性 #18....setattr 设置对象属性 setattr(test,e,'Hello world') print(getattr(test,'e','实例化对象没有 e 属性')) #hello world...#包含该类建立得一些方法 (此时x是一个属性) demo = getSize(1024) #实例化对象 print(demo.x) #利用属性获取方法返回 1024 demo.x = 2048...Python列表案例 补充: Python 拷贝对象(深拷贝deepcopy与浅拷贝copycopy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。...RuntimeError 一般的运行时错误 StopIteration 迭代器没有更多的 SyntaxError Python的语法错误 IndentationError 缩进错误 TabError

1.3K20

Python3内置函数表.md

如果第一个参数不是对象则返回False,第二个参数不是类或者由类对象组合成得元组,抛出一个TypeError异常; (16)hasattr(obj,name) #判断实例化对象里面是否存在该属性...获取对象属性 print(getattr(test,'x')) #1024 print(getattr(test,'e','实例化对象没有 e 属性')) #有实例化对象没有 e 属性 #18....setattr 设置对象属性 setattr(test,e,'Hello world') print(getattr(test,'e','实例化对象没有 e 属性')) #hello world...#包含该类建立得一些方法 (此时x是一个属性) demo = getSize(1024) #实例化对象 print(demo.x) #利用属性获取方法返回 1024 demo.x = 2048...RuntimeError 一般的运行时错误 StopIteration 迭代器没有更多的 SyntaxError Python的语法错误 IndentationError 缩进错误 TabError

89630
领券