专栏首页LEo的网络日志python技巧分享(六)

python技巧分享(六)

07 Feb 2018 python技巧分享(六)

这是一个系列文章,主要分享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的可变参数特性,可以通过元组传递多个参数,实现参数的“打包式”传递。

LEo at 20:33

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python技巧分享(三)

    songleo
  • python技巧分享(十一)

    songleo
  • python技巧分享(十一)

    songleo
  • SAP最佳业务实践:FI–应收帐款(157)-15 F150催款

    4.15 F150催款 已设置了两个催款过程: 0001 – 每 14 天一个催款通知,4 个催款级别 YB30 – 与利息计算相关的催款通知,创建发票后 30...

    SAP最佳业务实践
  • python-基本运算符(解压缩-必考)

    py3study
  • 全球十大机器人运动控制品牌

    ---- 近年来随着人力成本的上涨,全球制造业开始重视自动化技术的投入,随着欧美再工业化趋势的走热,全球竞争格局变得越来越激烈。以机器人为主要方向的智能制造已...

    机器人网
  • Spring boot应用踩坑集锦

    spring boot是spring的一种开发套件,是spring cloud的基础框架,要学习spring cloud微服务是绕不开的,遇到一些踩坑问题在这里...

    用户1141560
  • spring cloud/spring boot同时支持http和https访问

           关于spring boot同时支持http和https访问,在spring boot官网73.9已经有说明文档了,同样在github上也有官网的例...

    lyb-geek
  • 软件开发心得点滴记录

    自从2002年大学毕业后一直沉浸于软件开发之路,平时喜欢思考和归纳,时常会产生一点心得和想法,回想起来是一笔宝贵的财富,只可惜陆陆续续遗忘了。今天立此文章,希...

    一见
  • Python基础回顾基本数据类型和运算容器分支和循环函数、生成器和类map, reduce和filter列表生成(list comprehension)字符串文件操作和pickle异常多进程(mult

    Python shell输入import this 可以看到The Zen of Python 基本数据类型和运算 基本数据类型 Python中最基本的数据类...

    SeanCheney

扫码关注云+社区

领取腾讯云代金券