传递非默认依赖项时如何强制重新计算函数参数中的依赖参数值?

问题描述

假设我有 3 个变量和一个函数 func

a=1;b=1;c=1
def func(a=a,b=b,c=b/a):
    print(a,b,c)

令我惊讶的是,func(b=2) 产生了一个输出

1 2 1.0

为什么 c 不是 b/a,即不是 2/1=2

如果非ca(即它们中的任何一个不等于 b),我如何让函数调用时重新计算 1通过了吗?

解决方法

如果你想在没有传递任何值时让 c 有一个默认值,在函数参数中设置 c=None 并在没有传递 c 值时在函数内部设置默认值

a=1;b=1;c=1
def func(a=a,b=b,c=None):
    c = c if c is not None else b/a
    print(a,b,c)

Note: earlier solution fail when c=0 so updated as suggested by @MisterMiyagi