当前位置: 首页 > 知识库问答 >
问题:

如何使一个参数的默认值依赖于另一个参数(在Python中)?

叶谦
2023-03-14

例如,我想要:

def func(n=5.0,delta=n/10):

如果用户已指定增量,请使用它。如果不是,请使用依赖于 n 的值。这可能吗?

共有3个答案

谢墨竹
2023-03-14

你可以做:

def func(n=5.0, delta=None):
    if delta is None:
        delta = n / 10
    ...
呼延明朗
2023-03-14

你不能在函数定义行本身中做,你需要在函数体中做:

def func(n=5.0,delta=None):
    if delta is None:
        delta = n/10
席兴朝
2023-03-14

语言不支持此类语法。

对于这些情况(*),通常的解决方法是使用不是有效输入的默认值。

def func(n=5.0, delta=None):
     if delta is None:
         delta = n/10

(*)当默认值可变时,也会出现类似的问题。

 类似资料:
  • 问题内容: 例如,我想要: 如果用户指定了增量,请使用它。如果不是,则使用取决于n的值。这可能吗? 问题答案: 该语言不支持这种语法。 对于这些情况(*),通常的解决方法是使用不是有效输入的默认值。 (*)当默认值是可变的时,也会出现类似的问题。

  • 问题内容: 这个问题已经在这里有了答案 : 有没有办法将默认参数设置为等于另一个参数值? (4个答案) 5年前关闭。 是否可以在同一函数定义中将函数参数的默认值定义为另一个参数?就像是: 但这没用。 问题答案: 不可以。Python解释器认为要说法的默认值分配到一个全局变量时,没有一个全局变量。 您可能想要尝试这样的事情:

  • 我在下面定义了一个swagger 2.0资源。如何使“param1或param2”成为必填项?调用方必须传递param1或param2。

  • 我一定错过了一些明显的东西,因为这真的让我大吃一惊。 以下代码给出了错误: 是否有理由必须实例化一个带有1个默认值的参数的模板,并为其指定一个值? 有人能引用标准吗?

  • 问题内容: 我发现新类中的子类化和字典更新有一个奇怪的问题: 在调试中,在第二个调用()中,您可以看到构造函数内已经等于,并且在此之后调用构造函数时,这两个对象都变为了! 同样,构造函数调用的顺序为: 如果在构造函数中替换为,一切都会正常,并且将按预期方式运行 但是我确实需要 更新 此属性,而不是替换它。 问题答案: 不应具有这样的默认值。改为这样做: 这是一个常见的python “ gotcha

  • 我们知道,在调用函数时如果不指定某个参数, Python 解释器会抛出异常。为了解决这个问题,Python 允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值。这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该参数可以直接使用定义函数时设置的默认值。 Python 定义带有默认值参数的函数,其语法格式如下: def 函数名(...,形参名,形参名=默认值):     代码块