0

我有def似乎适用于 python3 的 python 定义:

def get_default_device(use_gpu: bool = True) -> cl.Device:

在 python2 下,我收到以下语法错误:

Traceback (most recent call last):
  File "map_copy.py", line 9, in <module>
    import utility
  File "/home/root/pyopencla/ch3/utility.py", line 6
    def get_default_device(use_gpu: bool = True) -> cl.Device:
                                  ^
SyntaxError: invalid syntax

如何使类型提示与 python2 兼容?

4

1 回答 1

1

Python 3.0的PEP 3107中引入了函数注释。在Python 3.5+的PEP 484中正式将注解用作类型提示。

3.0 之前的任何版本都将根本不支持您用于类型提示的语法。但是,PEP 484提供了一种解决方法,一些编辑可能会选择尊重它。在您的情况下,提示将如下所示:

def get_default_device(use_gpu=True):
    # type: (bool) -> cl.Device
    ...

或更详细地说,

def get_default_device(use_gpu=True  # type: bool
                      ):
    # type: (...) -> cl.Device
    ...

PEP 明确指出,这种形式的类型提示应该适用于任何版本的 Python,如果它完全受支持的话。

于 2018-11-14T18:30:35.053 回答