如何更改python函数中的参数?

时间:2013-02-26 03:55:10

标签: python

假设我有一个函数foo(x,k)并假设x是一个列表。我希望k默认为列表的长度。我只想写:

def foo(x, k=1):
  k = len(x)
  ..
end

我只想用一个参数运行foo,即x。

3 个答案:

答案 0 :(得分:9)

你应该这样做:

def foo(x, k=None):
    if k is None:
        k = len(x)
    ...

请注意,这可以更紧凑:

def foo(x, k=None):
    k = k or len(x)

答案 1 :(得分:2)

只是做:

def foo(x):
    k = len(x)

您不必将k传入此功能。你可以使用局部变量k。

如果您必须使用k,那么您可以这样做:

def foo(x,k):
    k = len(x)

虽然这不起任何作用。

答案 2 :(得分:0)

如果您的目的是在默认情况下使用k=len(l)没有特定顺序的可选k,则可以使用可选的关键字参数,如下所示:

def f(l,**kwargs):
    k=kwargs.get('k',len(l))    
    # if k is in kwargs, it overrides the default of len(l)..
    print 'l={}, len(l)={}, k={}'.format(l,len(l),k)

f([1,2,3])  
f([1,2,3],k=1)  

打印:

l=[1, 2, 3], len(l)=3, k=3
l=[1, 2, 3], len(l)=3, k=1

正如评论中所指出的,这是对David Robinson的approach中速度和参数位置的其他考虑的权衡。