Python:使用位于位置参数之前的默认参数调用函数

Jon*_*cox 5 python parameters arguments parameter-passing optional-parameters

例如,我想做类似的事情:greet(,'hola'),其中greet是:

def greet(person='stranger', greeting='hello')
Run Code Online (Sandbox Code Playgroud)

这对于编写代码时的测试有很大帮助

Ev.*_*nis 4

调用函数时,您可以使用变量名称来更清楚地了解哪个变量将采用哪个值。同时,如果函数定义中提供了默认值,则调用函数时跳过变量不会引发任何错误。所以,简而言之,你可以这样做:

def greet(person='stranger', greeting='hello')
    print('{} {}'.format(greeting, person))
    return

greet(greeting='hola')  # same as greet(person='stranger', greeting='hola')
# returns 'hola stranger'
Run Code Online (Sandbox Code Playgroud)

请注意,正如我上面所说,如果您的函数定义如下所示,则这将不起作用:

def greet(person, greeting)
    print('{} {}'.format(greeting, person))
    return
Run Code Online (Sandbox Code Playgroud)

因为在这种情况下,Python 会抱怨说它不知道如何处理person; 没有提供默认值..

顺便说一句,您所描述的问题很可能就是首先使用默认值的原因