类型提示返回 NameError: name 'datetime' 未定义

use*_*207 16 python type-hinting python-3.x python-typing

我在下面有这个功能;

def time_in_range(start, end, x):
    """Return true if x is in the range [start, end]"""
    if start <= end:
        return start <= x <= end
    else:
        return start <= x or x <= end
Run Code Online (Sandbox Code Playgroud)

函数参数均为日期时间类型。我想向函数添加输入提示。这就是我所做的;

def time_in_range(start: datetime, end: datetime, x: datetime) -> bool:
    """Return true if x is in the range [start, end]"""
    if start <= end:
        return start <= x <= end
    else:
        return start <= x or x <= end
Run Code Online (Sandbox Code Playgroud)

我收到错误NameError: name 'datetime' is not defined。为该函数添加类型的正确方法是什么?

我正在使用 python v3.7

Ped*_*ues 24

您需要导入datetime或使用字符串(请记住,这只是一个提示)。

>>> def f(x: datetime):
...     pass
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'datetime' is not defined
>>> def f(x: 'datetime'):
...     pass
...
>>>
>>> from datetime import datetime
>>> def f(x: datetime):
...     pass
...
>>>
Run Code Online (Sandbox Code Playgroud)

蟒蛇 3.7.4


blu*_*ote 9

或者作为提示import datetime使用datetime.datetime,或者作为提示from datetime import datetime使用datetime