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

如何找出哪些参数保留为默认值?[重复]

苏乐
2023-03-14

我有一个函数 func(a=1, b=2, c=3)。<如果所有参数都保留为默认值,并且任何给定的两个参数是用户指定的,即使用户巧合地将值指定为默认值,也会发生不同的情况。例如:

  • 用户进入 func() -

因此,为了决定是继续处理事情1还是事情2,我不能只是将参数值与默认值进行比较。我需要找出哪些参数是用户指定的,而不管它们的值如何。

(我还考虑过让默认值变得毫无意义,比如NaN或Inf,然后通过将它们与NaN或Inf进行比较来检查哪些值是用户指定的,然后根据需要将它们定义为a=1、b=2、c=3。这不起作用,因为numpy没有导入,也不需要导入,所以我没有访问NaN或Inf的权限。但可能我遗漏了什么?)

那么:有没有办法找出哪些参数是用户指定的和/或哪些是默认的,而不管它们的实际值如何?

共有1个答案

诸葛亮
2023-03-14

(我还考虑过让默认值变得毫无意义,比如NaN或Inf,然后检查哪些值是用户指定的。。。

这正是您通常处理此问题的方式。在简单的情况下,您可以使用作为您的哨兵值:

def func(a=None, b=None, c=None):
  if a is None:
      print('using default value')
      a = 1
  else:
      print('user specified a value')

但是如果是一个有效值,您可以使用其他一些对象。例如:

NOT_SET_BY_CALLER = object()


def func(a=NOT_SET_BY_CALLER, b=NOT_SET_BY_CALLER, c=NOT_SET_BY_CALLER):
  if a is NOT_SET_BY_CALLER:
      print('using default value')
      a = 1
  else:
      print('user specified a value')
 类似资料:
  • 对于一些函数,你可能希望它的一些参数是 可选 的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。 注意,默认参数值应该是一个参数。更加准确的说,默认参数值应该是不可变的——这会在后面的章节中做详细解释。从现在开始,请记住这一点。 使用默认参数值 例7.5 使用默认参数值 #!

  • 我如何在从下面的API生成的swagger中定义属性的默认值? Swashbuckle生成OrderDirection作为所需参数。我希望它是可选的,并向客户机指示默认值(不确定swagger是否支持此选项)。 我不喜欢使属性类型为空。还有其他选择吗?理想情况下使用内置类... 我用的是虚张声势的皮带扣。AspNetCore-https://docs.microsoft.com/en-us/asp

  • 我有一个VUE2项目,我编写了一个简单的函数来翻译日期中的月份,我想将它导入到我的一个组件中,但是我得到了一个错误: 在“@/utils/date-translation”中找不到导出“default”(导入为“translate date”) src文件夹中的相对文件路径是正确的,我导出的函数如下所示: 然后我将其导入到组件中,如下所示: 我做错了什么?

  • Scala 函数 Scala 可以为函数参数指定默认参数值,使用了默认参数,你在调用函数的过程中可以不需要传递参数,这时函数就会调用它的默认参数值,如果传递了参数,则传递值会取代默认值。实例如下: object Test { def main(args: Array[String]) { println( "返回值 : " + addInt() ); } def

  • 我有这种输入类型,我想为其中一个字段添加默认值。我想将 0 添加到示例输入中的值字段中。 有什么想法吗?

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