前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python技巧分享(六)

python技巧分享(六)

作者头像
俊采
发布2018-05-15 14:20:55
5490
发布2018-05-15 14:20:55
举报
文章被收录于专栏:LEo的网络日志

07 Feb 2018 python技巧分享(六)

这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。

1 正确的函数返回

  • 不推荐方式
代码语言:javascript
复制
def divide(a, b):
    if b != 0:
        return a * 1.0 / b


print divide(1, 0)
# None
print divide(0, 1)
# 0.0
  • 推荐方式
代码语言:javascript
复制
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 正确使用函数默认参数

  • 不推荐方式
代码语言:javascript
复制
def gen_list(a=[], b=None):
    a.append(b)
    return a


print gen_list(b=2)
# [2]
print gen_list(b=3)
# [2, 3]
  • 推荐方式
代码语言:javascript
复制
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 利用元组传递多个函数参数

代码语言:javascript
复制
def demo(a, b, c, d):
    print a, b, c, d


args = (1, 2, 3, 4)
demo(*args)
# 1 2 3 4

利用python的可变参数特性,可以通过元组传递多个参数,实现参数的“打包式”传递。

LEo at 20:33

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.02.07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 07 Feb 2018 python技巧分享(六)
    • 1 正确的函数返回
      • 2 正确使用函数默认参数
        • 3 利用元组传递多个函数参数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档