Python如何写出健壮的代码

所谓健壮性,就是程序代码能够在一些意料之外的参数输入时,还能正常运行。

直白点就是代码无BUG

在Python这门编程语言中有一套代码风格规范(PEP8),在我们实际工作中,可以不完全遵守这个规范,但是代码一定要更具健壮性。以下列举工作中遇到的代码编写容易存在BUG的地方

场景一:字典取值问题

dict_test = {'name':'Jack','city':'深圳','age':20}

res = dict_test['city']
print(res)
#深圳

通常我们都是这种取值方式,前提是key存在,但是当key不存在时,程序就会报错终止

res = dict_test['gender']
# 获取性别
# 程序报错终止
KeyError: 'gender'

改进方式:使用get()方式,当key不存在时,得到None值

res = dict_test.get('gender')
print(res)
#None

当然,如果你取值的是某id值,当不存在key时,还可以设置默认的value,如:

res = dict_test.get('id',0)
print(res)
# 0

场景二:判断对象是否存在

接收一个对象,判断其是否存在,如 你知道函数返回的是个列表

test_list = []

if len(test_list) == 0:
    print('对象为空')
else:
    pass

#列表为空

但这种判断方式并不安全,如果你无法确定对象会不会是None时,那用len()方法就可能会导致程序报错终止,如 某个函数给你返回一个None值,对其进行判断:

test_list = None

if len(test_list) == 0:
    print('对象为空')
else:
    pass
#程序报错终止
TypeError: object of type 'NoneType' has no len()

改进方式:用更简洁的代码风格替代len()

判断存在用 if 对象

test_list = [1,2,3]

if test_list:
    print('对象存在')
else:
    print('对象为空')
# 对象存在

判断不存在用 if not 对象

test_list = None

if not test_list:
    print('对象为空')
else:
    print('对象存在')
# 对象为空

场景三:异常捕获 try...except

异常捕获在一些入参的地方,或者计算数值的时候可以很好的避免代码报错终止程序,如:

num = 10
div_ = 0
# 除数为0,计算报错
print(num / div_)
ZeroDivisionError: division by zero

改进方式:加入异常捕获,程序就会正常执行完毕

num = 10
div_ = 0
try:
    res = num / div_
except Exception as e:
    print("计算错误,原因:%s" % e)

#计算错误,原因:division by zero

持续更新...

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值