python 错误异常处理

本文介绍了Python中的错误类型,包括语法错误、AttributeError和逻辑错误,并详细讲解了异常处理机制,如try-except-finally结构和手动抛出异常。同时,文章探讨了单元测试的基本概念,包括测试用例的编写和断言的使用,提醒开发者在实践中注意避免常见误区,如导入错误和对`if __name__ == '__main__'`的理解。
摘要由CSDN通过智能技术生成

错误类型

  • 语法错误
SyntaxError: EOL while scanning string literal

看着syntaxerror就是语法错误
AttributeError:属性异常

  • 语义错误
  • 逻辑错误
  • 找到错误
    try后面输入可能有异常的程序
    遇到错误就打印,except后面跟可能出错的类型,如果没有跟,所有错误都会打印
# try后面输入可能有异常的程序
try:
    x = 5 / 2
    print(x)
# 遇到错误就打印,except后面跟可能出错的类型,如果没有跟,所有错误都会打印
except ZeroDivisionError as e:
    print('不能除零',e)
except:
    print('程序遇到错误')
else:
    print('没有异常')

异常处理

try: 有可能出现异常代码
except:异常类型as 实例:捕获特定异常
else:未遇到异常
finally:不论是否遇到异常均会执行
raise:手动抛出异常

import unittest


class Coder:
    def __init__(self, name):
        self.name = name
        self.skills = []

    def mastering_skill(self, skill):
        self.skills.append(skill)

    def show_skills(self):
        print('掌握技能:')
        for skill in self.skills:
            print('-', 'skill')


class CoderTestCase(unittest.TestCase):
    def test_skill_in(self):
        c = Coder('Tom')
        c.mastering_skill('Python')
        c.mastering_skill('C++')

        self.assertIn('Python',c.skills)

if __name__ == "__main__":
    unittest.main()

测试一个类需要导入unittest模块,掌握一下assert板块。具体内容还需要摸索。

单元测试

在代码交付之前,需要对代码的功能进行测试,观察功能是否完备

基本结构

例子:测试一下加法和减法
class_exercise.py

def add(a, b):
    return a + b


def substract(a, b):
    return a - b

mytest.py

import unittest
from new_class_.class_exercise import add
from new_class_.class_exercise import substract


class Mytest(unittest.TestCase):
    def test_add(self):
        self.assertEqual(9, add(5, 3))

    def test_substract(self):
        self.assertEqual(2, substract(5, 3))


if __name__ == '__main__':
    unittest.main()

class Mytest(unittest.TestCase):这个是必须导入unittest.TestCase这个包,下面定义以
def test_开头,表示测试,最后以

if __name__ == '__main__':
    unittest.main()

收尾。

断言的类型

import unittest

person = {'name': "Mike", 'age': 20}
numbers = [1, 2, 3, 4, 5, 13, 88]
s = 'DIqu leshan'


class TestAssert(unittest.TestCase):
    def test_assert_method(self):
        # 判断值是否相等
        # self.assertEqual('Mike', person.get('name'))

        # 判断是否为真
        # self.assertTrue('leshan' in s)

        # 判断是否包含
        # self.assertIn('leshan', s)

        # 判断是否约等于
        # self.assertAlmostEqual(3.3, 1.1 + 2.2)

        # 判断Id值是否相等
        # self.assertIs(True + 1, 2)

        # 判断是否为空
        # self.assertIsNone(person.get('Name', None))

        # 判断是否为每个变量的实例
        # self.assertIsInstance(s, str)

        # 判断是否大于
        # self.assertGreater(2,3)

    if __name__ == '__main__':
        unittest.main()

简化版本

import unittest
from new_class_.class_exercise import Calculator


class CalculatorTest(unittest.TestCase):
    def setUp(self):
        self.c = Calculator(5, 3)

    def test_Add(self):
        self.assertEqual(8, self.c.add())

    def tearDown(self):
        del self.c


if __name__ == '__main__':
    unittest.main()

容易踩的坑

  1. 如何简单的理解Python中的if name == 'main

通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')

if __name__ == '__main__'的意思是:当 .py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

参考博客

  1. 踩过的坑:导入的时候导入错误,为什么?

在这里插入图片描述
这样就报错了,必须写成
在这里插入图片描述
为什么呢

参考博客

  1. 为什么每个文件夹下面的__init__文件都删不掉?

一个包是一个带有特殊文件 init.py 的目录。init.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只

是一个空文件,但是必须存在。如果 init.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。
参考博客

PDF文件大小为130M,PDF带目录索引,高清版 这是Power BI 官方中文教程的高清无删减版 连接到 Oracle数据库 在 Power b| Desktop中运行 Python脚本 在 Power查询编辑器中使用 Python 将外部 Python|DE与 Power bl一起使用 使用 Python创建 Power b|视觉村象 在 Power b| Desktop中运行R脚本 在查询编辑器中使用R 将外部R|DE与 Power b|一起使用 受支持的R包 值接在 Power b| Desktop中输入数据 在 Power Bl Desktop中连接到Exce Power b| Desktop中的 Analysis Services多维数据 通过 Power b| Desktop连接到CS∨文件 在 Power b| Desktop中连接到 Google BigQuery数据库 在 Power BI Desktop中连接到 Impala数据库 通过 Power BI Desktop连接到 OData数据源 在 Power b| Desktop中连接到 Amazon redshift数据库 通过 Power BI Desktop连接到网页 连接到 Power BI Desktop中的雪花型计算仓库 连接到 Microsoft Azure Consumption Insights 在 Power Bl Desktop中使用 SAP HANA Power BI Desktop中的 Analysis Services表格数据 在 Power b| Desktop中使用 DirectQuery Oracle和 Teradata数据库的 DirectQuery DirectQuery FA SAP Business Warehouse(BW) DirectQuery和 SAP HANA Power BI Desktop中的假设引用完整性设置 在 Power b| Desktop中使用 SAP BW连接器(预览) 在 Power b| Desktop中使用 One Drive for business链接 第三方服务:适用于 Power b| Desktop的 Facebook连接器 第三方服务:适用于 Power b| Desktop的 Google Analytics连接器 Project Online:通过 Power BI Desktop连接到数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值