python小知识-防范式编程

简介: 防范式编程是基于一种思想:主程序或者子程序不会因为传入错误的数据而被破坏。防范式编程的这种思维将程序可能导致的错误控制在有限的影响范围内。

1.什么是防范式编程?

防范式编程是基于一种思想:主程序或者子程序不会因为传入错误的数据而被破坏。防范式编程的这种思维将程序可能导致的错误控制在有限的影响范围内。

防范式编程可以代码的健壮性,是一个良好的代码编写习惯,特别是在:

  • 在守护进程或者后台程序中,保证服务持续不中断,不会因为
  • 在API接口设计中,空值API的输入在允许的范围内

总结一下,防范式编程要做的就是数据合规性检测和异常的处理

2.python的防范式编程

异常控制处理机制:try...except...finally, 是非常重要的一种防范式编程策略,这个主题在已讲解过,请前往。

https://mp.weixin.qq.com/s?__biz=MzA5MDUxMDUyMA==&mid=2452222338&idx=1&sn=cc4b916129d17276bc76c7daa8ab7c40&chksm=87d7d455b0a05d43b0cfb7808b68742a2f69cde11d2eecb8fdc8fed06a7c2b9a9eee076aecf2&token=1998982391&lang=zh_CN#rd

除了异常控制方式,python中对于数据合规性判断防范,提供了断言assert来判断是否满足条件。简单的例子如下:

a = None
assert a, "this is None"
assert 1==1, "this is not equal"

# AssertionError                            Traceback (most recent call last)
# <ipython-input-3-24485f90d1e8> in <module>()
#       1 a = None
#       2 
# ----> 3 assert a, "this is None"
#       4 
#       5 assert 1==1, "this is None"

# AssertionError: this is None

assert判断后面是否为False,如果为False则抛出AssertionError的异常。这个方式可以判断不同的数据要求。

另外,也可以通过if判断的方式,手动的raise抛出异常,例子如下:

a = None
if a is None:
    raise ValueError("this is None")
# ValueError                                Traceback (most recent call last)
# <ipython-input-7-f262deb027fc> in <module>()
#       1 a = None
#       2 if a is None:
# ----> 3     raise ValueError("this is None")

# ValueError: this is None

a = None
if a is None:
    raise
# RuntimeError                              Traceback (most recent call last)
# <ipython-input-8-f2e7c9709b97> in <module>()
#       1 a = None
#       2 if a is None:
# ----> 3     raise

# RuntimeError: No active exception to reraise

当前这些判断控制,都离不开异常的捕捉和处理。

目录
相关文章
|
4天前
|
存储 人工智能 数据处理
Python:编程的艺术与科学的完美交融
Python:编程的艺术与科学的完美交融
19 1
|
2天前
|
Python
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
|
4天前
|
网络协议 Unix Python
Python编程-----网络通信
Python编程-----网络通信
8 1
|
4天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
【5月更文挑战第9天】`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
32 5
|
4天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
14 0
|
4天前
|
测试技术 Python
Python模块化方式编程实践
【5月更文挑战第5天】Python模块化编程提升代码质量,包括:定义专注单一任务的模块;使用`import`导入模块;封装函数和类,明确命名便于重用;避免全局变量降低耦合;使用文档字符串增强可读性;为每个模块写单元测试确保正确性;重用模块作为库;定期维护更新以适应Python新版本。遵循这些实践,可提高代码可读性、重用性和可维护性。
44 2
|
4天前
|
测试技术 调度 索引
python编程中常见的问题
【4月更文挑战第23天】
33 2
|
4天前
|
网络协议 算法 网络架构
Python网络编程之udp编程、黏包以及解决方案、tcpserver
Python网络编程之udp编程、黏包以及解决方案、tcpserver
|
4天前
|
机器学习/深度学习 数据挖掘 算法框架/工具
Python:编程的艺术与魅力
Python:编程的艺术与魅力
25 3
|
4天前
|
机器学习/深度学习 数据可视化 数据挖掘
实用技巧:提高 Python 编程效率的五个方法
本文介绍了五个提高 Python 编程效率的实用技巧,包括使用虚拟环境管理依赖、掌握列表推导式、使用生成器提升性能、利用装饰器简化代码结构以及使用 Jupyter Notebook 进行交互式开发。通过掌握这些技巧,可以让你的 Python 编程更加高效。