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

如何忽略传递给函数的意外关键字参数?

程鸿波
2023-03-14
问题内容

假设我有一些功能,f

def f (a=None):
    print a

现在,如果我有一个字典,例如dct = {"a":"Foo"},我可以调用f(**dct)Foo打印结果。

但是,假设我有一本字典dct2 = {"a":"Foo", "b":"Bar"}。如果我打电话给f(**dct2)

TypeError: f() got an unexpected keyword argument 'b'

很公平。但是,无论如何,在其定义f或调用中,是否要告诉Python仅忽略不是参数名称的任何键?最好是一种可以指定默认值的方法。


问题答案:

作为@Bas发布答案的扩展,我建议将kwargs参数(可变长度关键字参数)添加为函数的第二个参数

>>> def f (a=None, **kwargs):
    print a


>>> dct2 = {"a":"Foo", "b":"Bar"}
>>> f(**dct2)
Foo

这一定足以满足

  1. 只忽略不是参数名称的任何键
  2. 但是,它缺少参数的默认值,这是一个很好的功能,可以很好地保留


 类似资料:
  • 问题内容: 我想使用字典在python中调用一个函数。 这是一些代码: 这可以打印,但我希望只打印test。 我希望它可以类似地工作以获取更多参数: 这可能吗? 问题答案: 最后自己解决了。很简单,我只是缺少运算符来解开字典 因此,我的示例变为:

  • 问题内容: 这似乎是一个愚蠢的问题,但是我是这个话题的新手。我正在致力于关于节点js的承诺。我想将参数传递给Promise函数。但是我不知道。 而功能类似于 问题答案: 将Promise包裹在一个函数中,否则它将立即开始工作。另外,您可以将参数传递给函数: 然后,使用它: ES6: 用:

  • 问题内容: 在我的 JSF 2.0 (在 JBoss AS 7上 )项目中,我希望在我的Ajax提交的表单上显示一个在开始和完成阶段触发的小图标状态,以使最终用户知道仍有事情发生。 该primefaces是没有用在这里,因为我想有在我的网页不同的地方很多不同的图标。 我在此问题中找到了一些解决方案:“如何在同一输入中显示不同的ajax状态?”,但是我仍然有一个问题:为了使我的javascript函

  • 问题内容: 我梦见一个带有显式关键字args的Python方法: 我想获得仅包含调用者实际上传递给方法的那些参数的字典,就像,但是我不希望调用者能够传递任何旧的随机args,而不是。 那么:有这样的咒语吗?就我而言,我碰巧能够将每个参数与其默认值进行比较,以找到不同的参数,但这有点不雅致,当您有9个参数时会变得乏味。为了获得奖励积分,即使调用者传入分配了默认值的关键字参数,它也可以告诉我: 调皮!

  • 问题内容: 以下作品: 垃圾邮件 但是,如果拿来争论呢? TypeError:spam()恰好接受1个参数(给定0) 鉴于我无权访问函数本身,而只能访问代码对象,执行该函数时如何将参数传递给该代码对象?评估可能吗? 编辑:由于大多数读者倾向于不相信这样做的用处,请参见以下用例: 我想将小的Python函数保存到文件中,以便可以从其他计算机上调用它们。(在这里不必说这个用例会严重限制可能的功能。)腌

  • 下面看似简单的代码抛出以下错误 回溯(最近一次调用last):文件“search.py”,第48行,pageToken=page_token)。方法中的第716行执行()文件“C:\Users\Choi\AppData\Local\Programs\Python\Python37\lib\site packages\GoogleAppClient\discovery.py” raise TypeE