Python:函数的默认值作为函数参数

Kώσ*_*δας 4 python arguments default function user-defined-functions

假设我有这样的功能:

def myF(a, b):
    return a*b-2*b
Run Code Online (Sandbox Code Playgroud)

假设我希望 的默认b值为a-1。

如果我写:

def myF(a, b=a-1):
    return a*b-2*b
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

NameError: name 'a' is not defined
Run Code Online (Sandbox Code Playgroud)

我可以使用下面的代码:

def myF(a, b):
    return a*b-2*b

def myDefaultF(a):
    return myF(a, a-1)
Run Code Online (Sandbox Code Playgroud)

具有myF默认值,但我不喜欢它。

如何避免myDefaultF并使用myF默认值a-1而不出现b错误?

Sel*_*cuk 8

您可以执行以下操作:

def myF(a, b=None):
    if b is None:
        b = a - 1
    return a * b - 2 * b
Run Code Online (Sandbox Code Playgroud)