人生苦短之Python函数的健壮性
如何评论一个开发代码写的好?清晰简洁明了?No,No,一个处女座就可以写出来了,整齐地代码,详细的注释不是代码好的标准,应该说不是最重要的标准。代码写的是否健壮才是检验的重要标准。
代码的健壮性:
当我们测试向开发提出一个bug,问怎么会出现这样一个bug,他们可能会说代码写的不健壮。何为健壮性,健康强壮,抵挡得住测试各种异常场景的测试才为健壮。而真正的大牛追求的就是以较少的代码量来完成逻辑开发,还能保持代码的健壮性。而这样的代码很少见,一般的程序员见到还不一定能看懂。
Python函数的健壮性
函数的定义:
1.无参函数 def func_name():
pass
2.有参函数 def func_name(a,b):
print (a,b)
3.默认参可选函数 def func_name(a, b=1):
print(a,b)
4.不定可变参函数 def func_name(*kw):
for i in kw:
print i
5.关键字参数 def func_name(a, b, **kw):
print(a,b,kw)
Python中的参数不像其它语言,我们可以指定传入参数的类型,个数,那么如何保证函数的健壮性呢?
1.知道要传入的参数是什么,类型,个数....(异常处理,逻辑判断)
2.知道函数要返回的是什么,用assert做断言判断。
例如一个加法函数:
def add(a, b):
if isinstance(a, int) and isinstance(b, int):
return a+b
else:
return '参数类型错误' print(add(4, 5))
print(add(4, 'a'))
assert add(4, 5) == 6
我们对参数类型做异常判断,对函数结果进行断言验证来保证函数的健壮性,当然在开发中不是仅仅判断函数类型这么简单,只是从中学习到要对写的每个函数进行分析,对各种异常进行处理,这样写出的程序才会健壮,这也是开发自测的一个过程。
人生苦短之Python函数的健壮性的更多相关文章
- 使用 const 提高函数的健壮性
使用 const 提高函数的健壮性 看到 const 关键字,C++程序员首先想到的可能是 const 常量.这可不是良好的条件 反射.如果只知道用 const 定义常量,那么相当于把火药仅用于制作 ...
- 使用const 提高函数的健壮性
1.如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地改动该指针指向的内存单元,起到保护的作用. 例如:void StringCopy(char *strDest, const cha ...
- 安装第三方Python模块,增加InfoPi的健壮性
这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet 自动检测文本编码 2.lxml 用于解析 ...
- python函数,模块及eclipse使用
一.eclipse的使用 1.作用 (1)最好用的IDE (2)可调式debug (3)查看可执行过程 (4)可查看源代码 2.安装eclipse及配置 目录安装Pythonpython for ec ...
- python函数,模块及eclipse配置python开发环境
一.eclipse的使用 1.作用 (1)最好用的IDE (2)可调式debug (3)查看可执行过程 (4)可查看源代码 2.安装eclipse及配置 目录安装Pythonpython for ec ...
- python函数-函数初识
python函数-函数初识 1.函数的定义 语法 def 函数名(参数1,参数2,参数3,...): '''注释''' 函数体 return 返回的值 2.函数的使用原则---先定义后调用 #定义阶段 ...
- Python函数讲解
Python函数
- strcpy之代码的健壮性与可维护性
strcpy 函数的原型是: char * strcpy(char * strDest,const char * strSrc); 功能:把从strSrc地址开始且含有NULL结束符的字符串 ...
- Python函数中参数类型
在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...
随机推荐
- Linux Perf Probes for Oracle Tracing
Luca Canali on 21 Jan 2016 Topic: this post is about Linux perf and uprobes for tracing and profilin ...
- xamarin android 获取根证书代码
Java.Security.KeyStore keyStore = Java.Security.KeyStore.GetInstance("AndroidCAStore"); ke ...
- 在win7上安装visual c++ 2008 redistributable 发生错误error 1935
方案一.原来服务"Windows Modules Installer"被禁用了, 启用该服务后, 问题就解决了. 方案二. 1.点开始——在运行框里输入regedit,按回车键 ...
- ShadowMap渲染阴影方法及问题 【转】
ShadowMap基于的原理:SM算法是一个2-pass绘制算法,第一pass从光源视点绘制场景,生成SM纹理,第2pass从视点视图按常规方法绘制场景 从光源的位置观察场景,这时候我们看不到的地方就 ...
- android wifi state and wifi ap state
/** * Wi-Fi is currently being disabled. The state will change to {@link #WIFI_STATE_DISABLED} if * ...
- C#中toolStrip或statusStrip遮挡了SplitContainer怎么办?
如果在一个项目中先增添了SplitContainer,然后再添加的Toolbar或statusStrip,结果后者把前者上部或下部挡住了一条,造成界面别扭. 解决办法是右键点击Toolba或statu ...
- 在jsp中拿到applicationContext
WebApplicationContext wac = (WebApplicationContext)config.getServletContext().getAttribute(WebApplic ...
- SqlServer查询语句中用到的锁
前段时间**公司DBA来我们这培训.讲了一大堆MYSQL的优化. QA环节一程序员问“SQL语句中的 with nolock 除了不锁表外,是否能读其他锁住的数据". 讲课的人嘟嘟了半天没解 ...
- Redux作用
作用:Redux是为了解决React中组件与组件之间数据传递的问题. React组件之间的传递有三种情况:1.父组件传递数据给子组件:由于redux是一个单向数据流的框架,所以它的数据就只能由父组件传 ...
- 赵雅智_Swift(3)_swift凝视
请将你的代码中的非运行文本凝视成提示或者笔记以方便你将来阅读. Swift 的编译器将会在编译代码时自己主动忽略掉凝视部分. 单行凝视 以双正斜杠作(//)为起始标记: // 这是一个凝视 多行凝视 ...