python-调用函数(2)

python中,有默认参数时,需要将默认参数放在必选参数之后

有多个默认参数时,可以通过顺序提供默认参数,也可以不通过默认顺序而是指定参数名提供参数。默认参数很有用,但有的时候也会变成坑。例如如下情况:

图1 可变默认参数函数调用

原因解释如下:

Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

所以,定义默认参数要牢记一点:默认参数必须指向不变对象!

上述函数可修改成如下方式:

图2 默认参数调用

为什么要设计str、None这样的不变对象?因为不变对象一旦创建,对象内部的数据就不能修改,这样就减少了由于修改数据导致的错误。此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有。我们在编写程序时,如果可以设计一个不变对象,那就尽量设计成不变对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,629评论 1 118
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,276评论 9 118
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,768评论 0 5
  • 图文:飘扬的海图片发自简书App不出去浪,不知道世界精彩… 生活原本就是一个有颜色,有生息,有动静的多彩世界,需要...
    飘扬的海阅读 2,614评论 0 10
  • 因是喜欢的玩具 所以闹着要买 因是喜欢的人儿 所以想要腻歪 但你却说 因为深爱 所以离开
    杳杳无音信阅读 270评论 0 0