我下面有这个功能;
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
函数参数均为datetime类型。我想为函数添加打字提示。这就是我所做的;
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
我收到错误 NameError: name 'datetime' is not defined。为此功能添加类型的正确方法是什么?
我正在使用 python v3.7
请您参考如下方法:
您需要导入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
...
>>>
python 3.7.4
--
更新。对于这个问题的一个稍微不同的版本导入 __future__.annotations
from __future__ import annotations
def f(dto: Dto):
pass
class Dto:
pass
否则,这将在对 Dto 类的函数引用中失败。 Python4 将此作为默认行为。现在,import 必须是文件的第一条语句。
在 Python 3.8.10 中测试。
