首页
学习
活动
专区
圈层
工具
发布

Python学习笔记(八)——错误、调试、测试

ZeroDivisionError as e: print('except:', e) finally: print('finally...') print('END') 当我们认为某些代码可能会出错时...BaseException类派生的,常见的错误类型和继承关系看这里: https://docs.python.org/3/library/exceptions.html#exception-hierarchy 使用...抛出错误 只有在必要的时候才定义我们自己的错误类型。如果可以选择Python已有的内置的错误类型(比如ValueError,TypeError),尽量使用Python内置的错误类型。...: pass def foo(s): n = int(s) if n==0: raise FooError('invalid value: %s' % s)...断言会抛出KeyError: with self.assertRaises(KeyError): value = d['empty'] 运行单元测试 一旦编写好单元测试,我们就可以运行单元测试。

1.1K20

Day13错误、调试和测试

END 当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块...END Python的错误其实也是class,所有的错误类型都继承自BaseException,所以在使用except时需要注意的是,它不但捕获该类型的错误,还把其子类也“一网打尽”。...3 4 def bar(s): ----> 5 return foo(s) * 2 #原因是return foo(s) * 2这个语句出错了,但这还不是最终原因,继续往下看:...10 / int(s) #原因是return 10 / int(s)这个语句出错了,这是错误产生的源头, 3 4 def bar(s): 5 return...---- pdb.set_trace() 调试 import pdb,然后,在可能出错的地方放一个pdb.set_trace(),就可以设置一个断点: import pdb s = '0' n =

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

    调用企业微信API发送文本,图片,文件消息

    (已在企业微信的通讯录中添加,添加后微信后台会自动分配标识),多个用户使用 “|” 隔开(如”zhdb|zhj|wqq”),所有人(“@all”); (2) corp_id–>str,企业ID,申请企业微信时获得...; (3) secret, agent_id–>str, 创建企业应用时获得. 3.本实例定义了三种消息格式的发送(text, image, file), 使用实例如下: chat = CorpWechat...= json.loads(r.text) try: return js['access_token'] except KeyError: # 成功返回后就会获得'access_token'字段,否则报错...= r.json() try: return js['media_id'] except KeyError: # 成功返回后就会获得'media_id'字段,否则报错KeyError raise KeyError...base_string = '''{ "touser": self.touser, "msgtype": msg_type, "agentid": self.agent_id, msg_type: {'%s'

    4.7K10

    异常处理(第十一章)内有福利

    (most recent call last): File "", line 1, in TypeError: unsupported operand type(s)...文件出错了,原因是unsupported operand type(s) for +: 'int' and 'str' >>> else语句(补充) 与if搭配的条件判断(要么怎样,要么不怎样) if...assert语句失败 AttributeError 特性应用或赋值时引发(试图访问一个对象没有的属性) IOError 试图打开不存在的文件或者无全新的文件等操作时...,就会引发(输入输入异常,基本是无法打开文件) ImportError 无法引入模块或包,基本是路径问题 IndexError 在使用系列中不存在的索引时引发(...使用一个未被赋予对象的变量 SyntaxError Python代码逻辑语法出错不能执行 TypeError 传入的对象类型与要求不符 UnboundLocalError

    1K20

    【Python】解决Python报错:KeyError: ‘username‘

    引言 在Python开发中,处理字典时遇到 KeyError 是一种常见的异常。它发生在尝试访问字典中不存在的键时。...常见的出错场景 2.1 用户输入处理错误 在处理用户输入或从外部数据源加载数据到字典时,如果预期的键没有正确录入,就可能触发 KeyError。...解决方案 解决 KeyError 的关键在于确保字典中存在指定的键或者在尝试访问键之前进行检查。 3.1 使用 get() 方法 get() 方法提供了一种安全访问字典键的方法。...# 使用get()避免KeyError username = user_data.get('username', '未知用户') print(username) 3.2 检查键是否存在 在需要时,可以先检查键是否存在于字典中...4.2 使用默认字典 (defaultdict) 使用 collections.defaultdict 可以提供默认值,这样即使键不存在也不会抛出 KeyError。

    59410

    一图流:Python所有内置异常

    在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一套代码就会出错...1、SyntaxError SyntaxError主要是Python语法发生了错误,比如少个冒号、多个引号之类的,编程时稍微疏忽大意一下就会出错,应该是最常见的一种异常错误了。...call last) in ----> 1 a-b TypeError: unsupported operand type(s)...KeyError是关键字错误,这个异常主要发生在字典中,比如当用户试图访问一个字典中不存在的键时会被引发。...思维导图下载: https://pan.baidu.com/s/1X4NIoRec1umU6Dhh9GobQQ 提取码:tcwy 官方文档: https://docs.python.org/3/library

    1.3K30

    【Python】已解决:Python读取字典查询键报错“KeyError: ‘d‘”

    然而,当尝试访问字典中不存在的键时,Python会抛出一个KeyError。例如,如果你尝试访问字典中不存在的键’d’,就会遇到KeyError: 'd’这样的报错。...二、可能出错的原因 KeyError通常发生在以下几种情况: 字典中确实不存在你尝试访问的键。 键的拼写错误或大小写不匹配。...四、正确代码示例 为了避免KeyError,你可以在访问字典之前先检查键是否存在,或者使用字典的get()方法,该方法允许你为不存在的键提供一个默认值。...错误处理:在编写涉及字典操作的代码时,考虑使用try-except块来捕获并处理可能的KeyError。...通过遵循上述建议,你可以减少在处理Python字典时遇到KeyError的风险,并编写出更加健壮和可维护的代码。

    61110

    【Python】已解决:(pandas读取DataFrame列报错)raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)

    一、分析问题背景 在使用pandas库处理数据时,我们经常会遇到需要读取DataFrame中特定列的情况。...然而,有时在尝试访问某些列时会触发KeyError异常,这通常发生在尝试访问DataFrame中不存在的列时。...二、可能出错的原因 KeyError通常意味着你试图访问的键(在这个场景中是列名)在字典(或类似映射结构,如DataFrame)中不存在。...五、注意事项 在编写代码时,为了避免KeyError,你需要注意以下几点: 列名准确性:确保你引用的列名与DataFrame中的实际列名完全一致,包括大小写和空格。...通过遵循上述指南和最佳实践,你可以减少在访问pandas DataFrame列时遇到KeyError的风险。

    94910

    腾讯大佬整理了 Python 所有内置异常,Python高手必备的排错手册

    在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如:在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一套代码就会出错...1、SyntaxError SyntaxError 主要是 Python 语法发生了错误,比如少个冒号、多个引号之类的,编程时稍微疏忽大意一下就会出错,应该是最常见的一种异常错误了 In [1]: While...call last) in ----> 1 a-b TypeError: unsupported operand type(s)...KeyError 是关键字错误,这个异常主要发生在字典中,比如当用户试图访问一个字典中不存在的键时会被引发 In [18]: dict_ = {'1':'yi','2':'er'} In [19]:...Traceback (most recent call last) in ----> 1 dict_['3'] KeyError

    1.4K30

    Python学习笔记(八)·错误、调试和测试

    比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。...or modulo by zero 根据错误类型ZeroDivisionError,我们判断,int(s)本身并没有出错,但是int(s)返回0,在计算10 / 0时出错,至此,找到错误源头。...出错时,会分析错误信息并定位错误发生的代码位置才是最关键的。 程序也可以主动抛出错误,让调用者来处理相应的错误。但是,应该在文档中写清楚可能会抛出哪些错误,以及错误产生的原因。...有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。...断言会抛出KeyError: with self.assertRaises(KeyError): value = d['empty'] 而通过d.empty访问不存在的key时,我们期待抛出AttributeError

    1.7K30

    python高阶教程-上下文管理器

    ) print("Test 3, key error") with my_context(3) as ins: print("ins' num is", ins.num) raise(KeyError...) KeyError 可以看到,如果在执行with代码块的时候发生了异常,可以在__exit__()方法中进行处理。...使用生成器实现上下文管理器 如果我们只是为一个简单的函数进行上下文管理,那么定义一个类略有些麻烦。好在我们还有标准库可以使用,这个标准库是contextlib。下面是一个简单的应用例子。...在生成器实现的上下文管理器中进行异常处理 使用类的方法进行上下文管理时,异常是作为参数传递的,那使用生成器进行上下文管理时应该怎样做呢?...It's value error 我们在try..except语句中对RuntimeError进行了处理,所以代码可以继续执行;没有对ValueError处理,所以异常继续向上抛,直到控制台输出错误信息

    61920
    领券