人生苦短之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参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...
随机推荐
- AtCoder - 2581 Meaningful Mean
Problem Statement You are given an integer sequence of length N, a= {a1,a2,…,aN}, and an integer K. ...
- Linux内核源码分析--内核启动之zImage自解压过程
参考: http://blog.chinaunix.net/uid-20543672-id-3018233.html Linux内核编译流程分析 linux2.6内核启动分析--李枝果(不看是你的损失 ...
- Android Adapter推荐写法
package jason.fragmentdemo.adapter; import nqy.fragmentdemo.R; import nqy.fragmentdemo.model.Article ...
- 【spring data jpa】使用spring data jpa 的删除操作,需要加注解@Modifying @Transactional 否则报错如下: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call
使用spring data jpa 的删除操作,需要加注解@Modifying @Transactional 否则报错如下: No EntityManager with actual tran ...
- 阿里云云服务器ubuntu配置nginx+uwsgi+django记录文档
1 安装ssh 1 sudo apt-get update 2 sudo apt-get install openssh-server 3 sudo ps -e |grep ssh 有sshd ...
- python 工具 二进制文件处理之——大小端变换
大端换小端 16位: import struct import sys # main body if sys.argv.__len__() > 1: # 参数获取 src_file = sys. ...
- css3 - 层次选择器
div div { background: orange; } body>div { background: green; } .active+div { background: lime; } ...
- VC++的窗口句柄和窗口ID
原文地址:VC++的窗口句柄和窗口ID作者:放放 句柄是窗口资源的标识,它标识资源在系统中所占用的内存块,应用程序通过窗口句柄对窗口进行操作.除了窗口句柄之外,任何一种资源都有它自己的句柄,比如光标句 ...
- 函数式编程( Functional)与命令式编程( Imperative)对比
1.函数式编程带来的好处 函数式编程近些年异军突起,又重新回到了人们的视线,并得到蓬勃发展.总结起来,无外乎如下好处: 1.减少了可变量(Immutable Variable)的声明,程序更为安全. ...
- how to run a continuous background task on OpenShift
https://stackoverflow.com/questions/27152438/best-way-to-run-rails-background-jobs-with-openshift ht ...