python - python中的函数注解

标签 python pep8 pep

我刚刚发现了 python 3 ( https://www.python.org/dev/peps/pep-3107/ ) 的函数注释,它似乎非常适合记录参数或返回类型。它还可以在我的 pycharm IDE 中提供更好的智能感知。

我有一个关于输入类型模糊的参数的问题。例如,它可以是列表或 numpy 数组或一些“类似数组”的数量。将此类输入参数注释到函数的最佳方法是什么?示例:

import numpy as np

def fun(data: np.ndarray) # can also be a list
    pass

我有另一种情况,输入可以是两种类型中的任何一种。示例:

def fun(header: Nifti1Header) # can also be Nifti2Header
    pass

记录这些类型的参数输入的最佳方式是什么?

最佳答案

如果你使用的是python3.5,最好的办法是使用typing.Union

>>> from typing import Union
>>> import numpy as np
>>> def fun(data: Union[np.ndarray, list]):
        pass

如果您一直使用 Union[t1, t2, ...],您也可以使用 typing.TypeVar。 (此外,与代码中的许多联合相比,您可以更轻松地从 TypeVar 添加和删除类型)

>>> from typing import TypeVar
>>> import numpy as np
>>> import array
>>> Ar = TypeVar('Ar', np.ndarray, list, array.array)

此代码会将 Ar 与列表、array.arrays 和 numpy 数组相关联。

关于python - python中的函数注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335149/

相关文章:

Python3 : unable to import JSONDecodeError from json.解码器

python - 字符串格式问题以及将字符串与数字连接

python - 符合长行以适应 PEP 8

python - 什么是尾随空格,我该如何处理?

python - 我应该在 Python 中使用 "camel case"还是下划线?

python - 使用 add_cookie 时 WebDrive 出现奇怪的异常

python - 发电机可以多次使用吗?

python - Python 是否评估前向引用的类型提示?

Python PEP8 约定

python - python 中 elif 后面是否必须跟着 else 作为通用规则?