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

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

,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执行finally语句块,至此...raise bar() bar()函数,我们明明已经捕获了错误,但是,打印一个ValueError!后,又把错误通过raise语句抛出去了,这不有病么?...最简单运行方式是mydict_test.py最后加上两行代码: if __name__ == '__main__': unittest.main() 这样就可以把mydict_test.py...当做正常python脚本运行: $ python3 mydict_test.py 另一种方法是命令行通过参数-m unittest直接运行单元测试: $ python3 -m unittest mydict_test...设想你测试需要启动一个数据库,这时,就可以setUp()方法连接数据库,tearDown()方法关闭数据库,这样,不必每个测试方法重复相同代码: class TestDict(unittest.TestCase

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

Python 工匠: 异常处理三个好习惯

继续阅读前,希望你已经了解了下面这些知识点: 1.异常基本语法与用法 2.为什么要使用异常代替错误返回 3.为什么写 Python 时鼓励使用异常 只做精准异常捕获 假如你不够了解异常机制,就难免会对它有一种天然恐惧感...所以代码里,我们用一个大大 try...except 语句块,将这几个步骤都包裹了起来。安全第一 。 那么,这段看上去简洁易懂代码,里面藏着什么问题呢?...假如你把眼睛贴近屏幕,非常仔细检查这段代码。你会发现在编写函数时,犯了一个小错误,把获取正则匹配串方法错打成了 obj.grop(1),少了一个 'u'( obj.group(1))。...打个比方,如果你想让一个请求返回 404 状态码,那么只要在该请求处理过程执行 raiseHttp404 即可。 所以,我们很自然从 Django 获得了灵感。...让给你从头理理这段代码。最初编写 process_image 时,虽然把它放在了 util.image 模块里,但当时调这个函数地方就只有 “处理用户上传图片 POST 请求” 而已。

73040

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

常见错误5:遍历列表时修改列表 下面代码错误很明显: >>> odd = lambda x : bool(x % 2) >>> numbers = [n for n in range(10)] >...常见错误9:不熟悉Python2和Python3之间差异 先来看看foo.py文件代码: import sys def bar(i): if i == 1: raise KeyError...2,上述代码运行正常 $ python foo.py 1 key error 1 $ python foo.py 2 value error 2 但是Python 3运行时: $ python3...下面是处理后代码Python2和Python3运行结果一致: import sys def bar(i): if i == 1: raise KeyError(1)...为什么呢?因为当Python解释器关闭时,该模块全局变量值都会被置为None。因此,在上述示例调用__del__函数时,foo值已经为None。

98910

Python 工匠:异常处理三个好习惯

继续阅读前,希望你已经了解了下面这些知识点: 异常基本语法与用法(建议阅读官方文档 “Errors and Exceptions”) 为什么要使用异常代替错误返回(建议阅读《让函数返回结果技巧》)...所以代码里,我们用一个大大 try ... except 语句块,将这几个步骤都包裹了起来。安全第一 ⛑。 那么,这段看上去简洁易懂代码,里面藏着什么问题呢?...假如你把眼睛贴近屏幕,非常仔细检查这段代码。你会发现在编写函数时,犯了一个小错误,把获取正则匹配串方法错打成了 obj.grop(1),少了一个 'u'(obj.group(1))。...打个比方,如果你想让一个请求返回 404 状态码,那么只要在该请求处理过程执行 raise Http404 即可。 所以,我们很自然从 Django 获得了灵感。...让给你从头理理这段代码。最初编写process_image时,虽然把它放在了 util.image模块里,但当时调这个函数地方就只有 “处理用户上传图片 POST 请求” 而已。

58840

Python 3json.dumps,会将中文转换为unicode编码后保存

python3,ensure_ascii=False就解决了问题  ------------------分割线以下部分纯属扯淡,没时间现在可以关闭页面了----------------------...经过了各种尝试,发现网上对python3编码问题进行了如下归纳  \uXXXX是unicode 16进制编码表现形式文件第一行加上# -*- coding: utf-8 -*-对字符串对象进行...True  关于第二条,那是python2故事,python3默认文件编码就是utf-8。...因此,保存python 3脚本时,请务必保存为utf-8。  关于第三条,那也是python2故事,python3,字符串默认采用unicode编码。 ...关于第四条,最初是参考  python3 把\u开头unicode转中文,把str形态unicode转中文 ,发现不能重现,后来当我用\\uXXXX时,就重现了这篇文章描述问题,因为\python

1.2K00

三个好习惯,帮你写好Python里异常处理

继续阅读前,希望你已经了解了下面这些知识点: 异常基本语法与用法(建议阅读官方文档 “Errors and Exceptions”) 为什么要使用异常代替错误返回(建议阅读《让函数返回结果技巧》)...所以代码里,我们用一个大大 try...except 语句块,将这几个步骤都包裹了起来。安全第一 ⛑。 那么,这段看上去简洁易懂代码,里面藏着什么问题呢?...假如你把眼睛贴近屏幕,非常仔细检查这段代码。你会发现在编写函数时,犯了一个小错误,把获取正则匹配串方法错打成了 obj.grop(1),少了一个 'u'( obj.group(1))。...打个比方,如果你想让一个请求返回 404 状态码,那么只要在该请求处理过程执行 raiseHttp404 即可。 所以,我们很自然从 Django 获得了灵感。...让给你从头理理这段代码。最初编写 process_image 时,虽然把它放在了 util.image 模块里,但当时调这个函数地方就只有 “处理用户上传图片 POST 请求” 而已。

1.1K20

Python 工匠: 异常处理三个好习惯

继续阅读前,希望你已经了解了下面这些知识点: 异常基本语法与用法(建议阅读官方文档 “Errors and Exceptions”) 为什么要使用异常代替错误返回(建议阅读《让函数返回结果技巧》)...所以代码里,我们用一个大大 try...except 语句块,将这几个步骤都包裹了起来。安全第一 ⛑。 那么,这段看上去简洁易懂代码,里面藏着什么问题呢?...假如你把眼睛贴近屏幕,非常仔细检查这段代码。你会发现在编写函数时,犯了一个小错误,把获取正则匹配串方法错打成了 obj.grop(1),少了一个 'u'( obj.group(1))。...打个比方,如果你想让一个请求返回 404 状态码,那么只要在该请求处理过程执行 raiseHttp404 即可。 所以,我们很自然从 Django 获得了灵感。...让给你从头理理这段代码。最初编写 process_image 时,虽然把它放在了 util.image 模块里,但当时调这个函数地方就只有 “处理用户上传图片 POST 请求” 而已。

88030

ChatGPT|微信快速接入ChatGPT

前言 最近chatGPT可谓是火一发不可收拾,从圈内火到圈外。人工智能领域,Ai已经是一个屡见不鲜东西了,为什么这次openAi推出chatGPT却异常受人欢迎?其实这还得益于GPT模型。...所以本着大公无私,大爱至上原则,也是第一时间发布了关于如何使用ChatGPT文章,好东西要大家分享嘛!...创建相关文件夹 打开你服务器,,使用下面得命令创建一系列文件夹,备用。...": "") 2.群组聊天 群组聊天,群名称需配置 group_name_white_list 才能开启群聊自动回复。...如果扫码登录之后出现下面的日志信息,说明登录成功,可以开始给登录该账号微信聊天了,这个微信此时此刻,就是一个chatGPT。

11.4K51

Python 单元测试 & 文档测试

(self):        d = Dict()        with self.assertRaises(KeyError):  #通过d['empty']访问不存在key时,断言会抛出KeyError...----------------------------------- Ran 5 tests in 0.001s OK 1.1.3 setUp() & tearDown() 这两个方法分别在单元测试每个测试方法前后被执行...并且,Python内置“文档测试”(doctest)模块可以直接提取注释代码并执行测试。 doctest严格按照Python交互式命令行输入和输出来判断测试结果是否正确。...mydict2.py: $ python3 mydict2.py 什么输出也没有。...注意到最后3行代码。当模块正常导入时,doctest不会被执行。只有命令行直接运行时,才执行doctest。所以,不必担心doctest会在非测试环境下执行。

1K10

Python 标准库 pwd 背后秘密

一周一个标准库之 PWD 背景 用 Python 讨生活这么多年,一直以来一个观点就是 “ Python 这个大环境下 import xxx 写完之后功能就实现了 50% ~ 80% 。”。...如果我们选择自己硬写的话,pwd 功能也不是不可替代;但相比复用标准库我们代码可能要长好多。下面写一个检查给定用户是否存在功能。 #!.../usr/bin/env python3 def has_user(name:str="root"): """ 检查给定用户在当前操作系统是否存在 Parameter.../usr/bin/env python3 import pwd def has_user(name:str="root"): """ 检查给定用户在当前操作系统是否存在...2、后来因为一些工作上原因(我们这边希望 MySQL DBA 要有 Debug MySQL 能力),就这样又把 C/C++ 从故纸堆里捡了回来,遥想当年就是看到下面这样一段 C 代码时候顿悟

1.5K40

Python3之异常处理】 转

IndexError 序列没有此索引(index) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命) NameError...二、异常处理 1.异常处理定义 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) 如果捕捉成功则进入另外一个处理分支...(): print('输入是空格,就执行这里逻辑') elif len(num1) == 0: print('输入是空,就执行这里逻辑') else: print('...其他情情况,执行这里逻辑') #第二段代码 # num2=input('>>: ') #输入一个字符串试试 # int(num2) #第三段代码 # num3=input('>>: ') #输入一个字符串试试...>>:gg invalid literal for int() with base 10: 'gg' 万能异常 python异常,有一个万能异常:Exception,他可以捕获任意异常 s1 =

1.2K20

面向对象:异常处理

python,错误触发异常如下 ?...part3:python异常种类 python不同异常可以用不同类型(python中统一了类与类型,类型即类)去标识,不同类对象标识不同异常,一个异常标识一种错误 # 触发IndexError...异常发生之后 异常之后代码就不执行了 什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关...(这里说逻辑即当前expect下面代码块) Exception 2.如果你想要效果是,对于不同异常我们需要定制不同处理逻辑,那就需要用到多分支了。...if方式好处 try..except这种异常处理机制就是取代if那种方式,让你程序不牺牲可读性前提下增强健壮性和容错性 异常处理为每一个异常定制了异常类型(python中统一了类与类型,类型即类

51420

异常处理

# 用户输入不完整 num = input(">>: ") int(num) #无法完成计算 res1 = 1/0 res2 = 1+'str' 逻辑错误 二丶异常种类   Python不同异常可以用不同类型...python解释器检测到错误,触发异常(也允许程序员自己触发异常)     程序员编写特定代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)如果捕捉成功则进入另外一个处理分支,执行你为其定制逻辑...,使程序不会崩溃,这就是异常处理   为什么要异常处理?     ...print('其他情情况,执行这里逻辑') ''' 问题一: 使用if方式我们只为第一段代码加上了异常处理,但这些if,跟你代码逻辑并无关系,这样你代码会因为可读性差而不容易被看懂 问题二...: 这只是我们代码一个小逻辑,如果类似的逻辑多,那么每一次都需要判断这些内容,就会倒置我们代码特别冗长。

1.1K40

python——异常处理

python,错误触发异常如下 l=['egon','aa'] l[3] dic={'name':'egon'} dic['age'] AttributeError 试图访问一个对象没有的属性,...异常发生之后 异常之后代码就不执行了 什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关...,执行这里逻辑') ''' 问题一: 使用if方式我们只为第一段代码加上了异常处理,但这些if,跟你代码逻辑并无关系,这样你代码会因为可读性差而不容易被看懂 问题二: 这只是我们代码一个小逻辑...(这里说逻辑即当前expect下面代码块) 2.如果你想要效果是,对于不同异常我们需要定制不同处理逻辑,那就需要用到多分支了。...part9:try..except方式比较if方式好处 try..except这种异常处理机制就是取代if那种方式,让你程序不牺牲可读性前提下增强健壮性和容错性 异常处理为每一个异常定制了异常类型

776100

Python面试8个必考问题

1、下面这段代码输出结果是什么?请解释。 怎样修改extendList定义能够产生以下预期行为?...还有种替代方案是,使用偏函数: 3、下面这段代码输出结果将是什么?请解释。 输出结果将是: 让很多人困惑或惊讶是最后一行输出为什么是3 2 3 而不是 3 2 1....) 这就是为什么第三打印语句输出结果是3 2 3 4、下面这段代码Python2下输出结果将是什么?...Python3下结果会有怎样不同?(当然,假设上述打印语句被转换成Python3语法) Python2,上述代码输出将是 默认情况下,Python 2 自动执行整形计算如果两者都是整数。...然而在Python3,没有此类特性, 例如,两端都是整形情况下,它不会执行整形除法 因此,Python3,将会是如下结果: 5、下面代码输出结果将是什么?

863100

Python 工匠: 异常处理三个好习惯

继续阅读前,希望你已经了解了下面这些知识点:异常基本语法与用法(建议阅读官方文档 “Errors and Exceptions”)为什么要使用异常代替错误返回(建议阅读《让函数返回结果技巧》)为什么写...所以代码里,我们用一个大大 try...except 语句块,将这几个步骤都包裹了起来。安全第一。那么,这段看上去简洁易懂代码,里面藏着什么问题呢?...假如你把眼睛贴近屏幕,非常仔细检查这段代码。你会发现在编写函数时,犯了一个小错误,把获取正则匹配串方法错打成了 obj.grop(1),少了一个 'u'( obj.group(1))。...打个比方,如果你想让一个请求返回 404 状态码,那么只要在该请求处理过程执行 raiseHttp404 即可。所以,我们很自然从 Django 获得了灵感。...让给你从头理理这段代码。最初编写 process_image 时,虽然把它放在了 util.image 模块里,但当时调这个函数地方就只有 “处理用户上传图片 POST 请求” 而已。

68310
领券