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

乔希:

如果我有这样的功能:

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
NoɥʇʎԀʎzɐɹƆ:

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

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

print(foo.__annotations__)

这个输出

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

类型提示和默认参数值也是方法签名吗?

类型提示默认参数

是否可以在Python的默认参数值分配中使用参数的值?

如何在Python中使用传递的参数作为默认参数值?

在pyspark中的Scala UDF中使用默认参数值?

在Swift中,可以在默认参数值中使用参数值吗?

在numba中使用python类型提示

默认参数是否覆盖mypy的类型提示?

在成员函数的默认参数中使用强类型枚举的成员

不可变默认参数值的Python行为

如果未在 FFMPEG 命令执行中使用,则获取默认参数值列表

如何告诉函数使用默认参数值?

PhpStorm:使用按键填充默认参数值

如何在python 3.6中使用类型提示?

在Python中使用正确的类型提示对Sequence进行子类化

加载对象时如何在Python中使用类型提示

在可以返回不同类型参数的函数中使用类型提示是否有意义?

使用参数化查询在使用OldDb的Access中添加刻度为2的数值类型列

更改 python 类型提示的成员参数类型

“使用类模板需要模板参数”错误,并带有默认指定的非类型模板参数值

带有默认参数值的打字稿条件返回类型

模板功能中的默认参数值,取决于类型

错误Nil的默认参数值不能转换为'NSLayoutFormatOptions'类型

如何在#selector中添加默认参数值

使用livewire从URL获取类型参数值

在PowerShell中使用动态参数值

在HTML属性中使用XSL参数值

在存储过程中使用参数值

在 Clap 中使用多个参数值