Python 默认参数值

来源:互联网 发布:获取json的key和value 编辑:程序博客网 时间:2024/05/17 21:07

用 pychecker 检测代码时, 提示

Modifying parameter (***) with a default value may have unexpected consequences
记起"Google Python 语言规范" 中提到
不要在函数或方法定义中使用可变对象作为默认值.Yes: def foo(a, b=None):         if b is None:             b = []No:  def foo(a, b=[]):         ...
写了下面的代码进行测试:
#!/usr/bin/env python#coding=utf-8def foo(data=[]):    data.append(1)    return data    print foo()print foo()print foo()
输出
[1][1, 1][1, 1, 1]

#!/usr/bin/env python#coding=utf-8def foo(data=None):    if not data:        data = []    data.append(1)    return data    print foo()print foo()print foo()
输出为
[1][1][1]
可见默认参数尽量不要使用可变类型.

详细的原因可以参考: http://effbot.org/zone/default-values.htm




0 0
原创粉丝点击