Python样式指南,用于函数参数的默认值

时间:2019-04-24 17:25:46

标签: python

不创建实例作为默认值:

def foo(v1=None):
  if v1 is None:
    v1 = Foo()

创建实例作为默认值:

def foo(v2=Foo()):

哪种方式在python风格中是首选?

1 个答案:

答案 0 :(得分:2)

如果您希望每次调用该函数时都创建一个新实例,则可以这样做:

def foo(v1=None):
    if v1 is None:
        v1 = Foo()

这是行不通的:

def foo(v2=Foo()):
    pass

为什么?因为默认参数值每个模块加载仅评估一次,通常在程序启动时发生。加载包含此代码的模块后,将不再对默认参数进行求值。