这是一个系列文章, 主要分享 python 的使用建议和技巧, 每次分享 3 点, 希望你能有所收获
1 正确的函数返回
不推荐方式
- def divide(a, b):
- if b != 0:
- return a * 1.0 / b
- print divide(1, 0)
- # None
- print divide(0, 1)
- # 0.0
推荐方式
- def divide(a, b):
- try:
- return a * 1.0 / b
- except ZeroDivisionError as e:
- raise e
- print divide(0, 1)
- # 0.0
- print divide(1, 0)
- # ZeroDivisionError: float division by zero
前一种方式中, 如果输入的参数 b 为 0, 函数会默认返回 None, 这是一个不太好的编程习惯例如, 当把函数的返回值作为 if 条件判断时, 0.0 和 None 都是 False, 这样容易导致 bug 后面这种方式, 将除数是 0 当成异常抛出, 让调用者处理异常, 是比较合理的做法
2 正确使用函数默认参数
不推荐方式
- def gen_list(a=[], b=None):
- a.append(b)
- return a
- print gen_list(b=2)
- # [2]
- print gen_list(b=3)
- # [2, 3]
推荐方式
- def gen_list(a=None, b=None):
- if a is None:
- a = []
- a.append(b)
- return a
- print gen_list(b=2)
- # [2]
- print gen_list(b=3)
- # [3]
前一种方式会导致函数默认值改变, 多次调用相互影响正确方式是将函数默认值设置成 None, 在函数内部初始化默认参数这里只是针对传递引用类型的参数, 如果是数字字符串等类型就不存在该问题
3 利用元组传递多个函数参数
推荐方式
- def demo(a, b, c, d):
- print a, b, c, d
- args = (1, 2, 3, 4)
- demo(*args)
- # 1 2 3 4
利用 python 的可变参数特性, 可以通过元组传递多个参数, 实现参数的打包式传递
来源: http://www.jianshu.com/p/dd48b7617ec3