阅读Python 3.1中的更改,我发现了一些......意外的:
sys.version_info元组现在是一个命名元组:
我之前从未听说过命名元组,我认为元素可以用数字(如元组和列表)或键(如dicts)索引.我从没想过他们可以两种方式编入索引.
因此,我的问题是:
我在python中有一个函数可以返回a bool或a list.有没有办法使用类型提示指定返回类型.
例如,这是正确的方法吗?
def foo(id) -> list or bool:
...
Run Code Online (Sandbox Code Playgroud) 当我为返回一个参数的函数编写注释时,我没有任何问题。
def func() -> str:
return "ok"
Run Code Online (Sandbox Code Playgroud)
但是,当我编写带有两个或多个参数的注释时,我的PyCharm给了我SyntaxError: invalid syntax。
def func() -> str, str:
return "ok - 1", "ok - 2"
Run Code Online (Sandbox Code Playgroud)
我认为参数可以与组合使用tuple,但是我认为这不是最好的方法。
我的问题是:如何正确注释带有两个或多个返回参数的函数?
既然python 3.6(或3.4?我不记得了)我们可以注释一个函数.例如:
def getVersion() -> str:
Run Code Online (Sandbox Code Playgroud)
现在当函数返回一个元组时会发生什么?我们能做到这一点:
def func() -> tuple:
Run Code Online (Sandbox Code Playgroud)
但是,如果我们知道元组是两个整数的元组?我在这里阅读:如何注释多个返回值的类型?我们可以这样做:
def func() -> Tuple[int, int]
Run Code Online (Sandbox Code Playgroud)
但它需要导入typing模块.
我也试过了:
def func() -> (int, int):
Run Code Online (Sandbox Code Playgroud)
它不会崩溃.
什么是正确的方法?
我有一个自定义类型,我想启用它的值解包(元组解包等)。我知道在 Python 中执行此操作的最简单方法是实现__iter__. 这在运行时效果很好,但我想提供类型注释,以便为每个项目返回正确的类型,例如:
import typing as t
from dataclasses import dataclass
@dataclass
class Foo:
a: str
b: bool
def __iter__(self) -> t.Iterable[str, bool]:
yield self.a
yield self.b
Run Code Online (Sandbox Code Playgroud)
在运行时,这按预期工作:
string, bool = Foo("Hello", False)
Run Code Online (Sandbox Code Playgroud)
但是,string以上bool内容均报告为Any类型。是否有一种合理的方法可以在保留类型的同时提供此用例?
现实世界的类型不容易转换为 NamedTuple 等。
如何使用Python类型提示编写函数声明,以便函数返回多个返回值?
是否允许以下语法?
def greeting(name: str) -> str, List[float], int :
// do something
return a,b,c
Run Code Online (Sandbox Code Playgroud) 我正在使用dataclass装饰器。
对于我的一个变量,我希望它是 astr或int类型
from dataclasses import dataclass
@dataclass
class Foo:
test_var: str
# test_var: int
def get_example(self):
return type(self.test_var)
Run Code Online (Sandbox Code Playgroud)
当对象被构造时,我希望 fortest_var是 astr或 an ;如何为我的类的属性指定两种类型?intFoo
python ×8
python-3.x ×3
type-hinting ×3
tuples ×2
annotations ×1
list ×1
mypy ×1
namedtuple ×1
object ×1
oop ×1
python-3.5 ×1
return-type ×1
typehints ×1