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

在Python中使用类型提示添加默认参数值

熊锐进
2023-03-14
问题内容

如果我有这样的功能:

def foo(name, opts={}):
  pass

我想在参数中添加类型提示,该怎么做?我假设的方式给了我一个语法错误:

def foo(name: str, opts={}: dict) -> str:
  pass

以下代码不会引发语法错误,但似乎不是处理这种情况的直观方法:

def foo(name: str, opts: dict={}) -> str:
  pass

我在typing文档或Google搜索中找不到任何内容。

编辑:我不知道默认参数如何在Python中工作,但出于这个问题,我将保留上面的示例。通常,最好执行以下操作:

def foo(name: str, opts: dict=None) -> str:
  if not opts:
    opts={}
  pass

问题答案:

您的第二种方法是正确的。

def foo(opts: dict = {}):
    pass

print(foo.__annotations__)

这个输出

{'opts': <class 'dict'>}

的确,它没有在PEP
484中
列出,但是类型提示是功能注释的一种应用,已在PEP
3107中进行了记录。语法部分明确指出,关键字参数以这种方式与功能注释一起使用。

我强烈建议您不要使用可变的关键字参数。更多信息在这里。



 类似资料:
  • 如果我有这样一个函数: 我想给参数添加类型提示,怎么做?我假设的方式给了我一个语法错误: 以下内容不会引发语法错误,但似乎不是处理这种情况的直观方式: 我在文档中或在Google搜索中找不到任何东西。 编辑:我不知道默认参数在Python中是如何工作的,但为了这个问题,我将保留上面的示例。一般说来,做以下事情要好得多:

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

  • 问题内容: 我对PHP函数的默认值感到困惑。说我有一个这样的功能: 如果我想为$ x使用默认参数并为$ y设置不同的参数怎么办? 我一直在尝试不同的方法,但我变得更加困惑。例如,我尝试了以下两种方法: 但是这两个都不会为$ x产生适当的默认参数。我也试图通过变量名来设置它。 我完全希望这样的事情能奏效。但这根本不符合我的预期。似乎不管我做什么,每次调用该函数时,无论如何我都必须最终键入默认参数。而

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

  • 问题内容: 我正在尝试简化我的作业问题之一,并使代码更好一点。我正在使用的是二进制搜索树。现在,我的班级中有一个函数可以查找所有元素并将它们放入列表中。 然后我使用makeList()函数从树中取出所有节点,并将它们放入列表中。要调用该函数,我要做。对我来说,这似乎有些重复。我已经用调用了树对象,所以只是浪费了一点输入。 现在,makeList函数为: 我想使aNode输入一个默认参数,例如(它不

  • 问题内容: 我注意到python 3.5和python 3.6添加了许多有关静态类型检查的功能,因此我尝试使用以下代码(在python 3.6中为稳定版本)。 令我惊讶的是,尽管python附加到仅包含字符串的,但它却没有给我错误或警告。检测到类型错误并向我发出警告,但是它不明显,并且未在输出控制台中显示,我担心有时可能会错过它。我想要以下效果: 如果很明显如上所述我使用了错误的类型,请抛出警告或