当前位置: 首页 > 面试题库 >

有条件地将任意数量的默认命名参数传递给函数

卫招
2023-03-14
问题内容

是否可以有条件地将任意数量的命名默认参数传递给Python函数?

例如。有一个功能:

def func(arg, arg2='', arg3='def')

现在的逻辑是,我有一个确定是否需要传递arg3的条件,我可以这样做:

if condition == True:
    func('arg', arg2='arg2', arg3='some value')
else:
    func('arg', arg2='arg2')

问题是,我可以像这样简写:

func('arg', 'arg2', 'some value' if condition == True else # nothing so default gets picked
)

问题答案:

我能想到的唯一方法

func("arg", "arg2", **({"arg3": "some value"} if condition == True else {}))

要么

func("arg", "arg2", *(("some value",) if condition == True else ()))

但请不要这样做。使用您自己提供的代码或类似的代码:

if condition:
   arg3 = "some value",
else:
   arg3 = ()
func("arg", "arg2", *arg3)


 类似资料:
  • 问题内容: 我想在我的课程中传递默认参数,但是不知何故我遇到了问题: 如果现在尝试实例化,则会出现以下错误: 我究竟做错了什么? 问题答案: 从该文档: 要使用的参数是: default_factory: 如果提供, 则必须为零参数可调用对象 ,当此字段需要默认值时将被调用。除其他用途外,这可用于指定具有可变默认值的字段,如下所述。同时指定default和default_factory是错误的。

  • 问题内容: 我在我们的存储过程中使用了一个表值参数。这是我使用的语法: (是用户定义的表类型)。 但是,作为要求,我需要将默认值传递给此表值参数。 但是上面的代码会引发语法错误。是否可以将默认值传递给表值参数?有人可以帮我吗? 问题答案: 您可以默认通过TVP: 这相当于一个空表。

  • 我是的新用户,我想回忆不同变量的代码块,我想做如下事情: 这里的都是中的变量。如果我调用,这部分就可以工作了。但是,我调用的方式仍然没有告诉这个函数group by是由完成的。我怎么让它工作?

  • 我在更新react native和react后出现此错误 我认为这是正确的语法,但我不知道为什么显示这个错误: SyntaxError:导出时出现意外标记= 。在模块上运行InthisContext(vm.js:53:16) _在对象上编译(module.js:387:25) 。模块_扩展。。js(module.js:422:10) 在模块中。在函数处加载(module.js:357:32) 。模

  • 问题内容: 我很好奇Go中是否有可能。我有多种方法的类型。是否可以有一个函数,该函数需要一个方法参数,然后将其称为类型? 这是我想要的一个小例子: Go认为type 有一个称为的方法,而不是用传入的方法名称替换它。 问题答案: 是的,有可能。您有2(3)个选项: 规范:方法表达式 该表达式产生的功能与第一个参数等效,但具有一个显式接收器。它有签名。 在这里,方法接收器是显式的。您只需将方法名称(具

  • 问题内容: 我试图了解Go在创建带有参数的匿名函数与将该函数用作闭包之间的区别。这是区别的一个例子。 带参数: 作为关闭: 我的问题是,第一种形式何时比第二种更好?您是否会为此类事情使用参数?我唯一看到第一种形式有用的是从另一个函数返回a时。 问题答案: 使用闭包与使用函数参数之间的区别在于共享同一变量与获取值的副本有关。请考虑下面的两个示例。 在 Closure中, 所有函数调用都将使用中存储的

  • 问题内容: 我有一个PHP函数,该函数需要可变数量的参数(使用和),但是我要传递给该函数的参数数量取决于数组的长度。有没有一种方法可以使用可变数量的参数来 调用 PHP函数? 问题答案: 如果参数在数组中,则该函数可能会对您有兴趣。 如果您要传递的参数数量取决于数组的长度,则可能意味着您可以将它们自己打包到数组中-并将其用于第二个参数。 然后,您传递给该数组的元素将作为不同的参数被函数接收。 例如

  • 问题内容: 我已经熟悉Android框架和Java,并希望创建一个通用的“ NetworkHelper”类,该类可以处理大多数联网代码,使我能够从中调用网页。 我遵循了来自developer.android.com的这篇文章来创建我的网络类:http : //developer.android.com/training/basics/network- ops/connecting.html 码: