实现它时,该函数指定它接受并返回的参数类型。
def greeting(name: str) -> str:
return 'Hello ' + name
我的问题是,如果实现了Python的类型提示有什么好处?
我使用TypeScript,其中类型很有用(因为JavaScript在类型识别方面有点愚蠢),而Python对类型有点聪明,如果实现,可以给Python带来哪些好处?这会改善python的性能吗?
答案 0 :(得分:7)
类型提示可以帮助:
我普遍缺乏类型提示也有好处:
我认为类型提示是可选的并不是必需的,如Java,C ++ - 超过优化会杀死创造力 - 我们真的不需要关注变量的类型,而是首先考虑算法 - 我个人认为更好写一行代码为4来定义Java中的简单函数:)
def f(x):
return x * x
相反
int f(int x)
{
return x * x
}
long f(long x)
{
return x * x
}
long long f(int long)
{
return x * x
}
...或使用模板/泛型
答案 1 :(得分:7)
以类型函数
为例def add1(x: int, y: int) -> int:
return x + y
和一般功能。
def add2(x,y):
return x + y
使用add1
add1("foo", "bar")
会导致
error: Argument 1 to "add1" has incompatible type "str"; expected "int"
error: Argument 2 to "add2" has incompatible type "str"; expected "int"
add2
上的不同输入类型的输出,
>>> add2(1,2)
3
>>> add2("foo" ,"bar")
'foobar'
>>> add2(["foo"] ,['a', 'b'])
['foo', 'a', 'b']
>>> add2(("foo",) ,('a', 'b'))
('foo', 'a', 'b')
>>> add2(1.2, 2)
3.2
>>> add2(1.2, 2.3)
3.5
>>> add2("foo" ,['a', 'b'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in add
TypeError: cannot concatenate 'str' and 'list' objects
请注意add2
是一般的。只有在执行该行后才会引发TypeError
,您可以通过类型检查来避免这种情况。通过类型检查,您可以在最开始识别类型不匹配。
<强>优点:强>
<强>缺点:强>