>>> def f(ham: str, eggs: str = 'eggs') -> str:
... print("Annotations:", f.__annotations__)
... print("Arguments:", ham, eggs)
... return ham + ' and ' + eggs
...
>>> f('spam')
Annotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>}
Arguments: spam eggs
'spam and eggs
这新功能简直是福音啊!
1
oyjc 2016 年 4 月 1 日
有啥用吗?为了静态编译?
|
3
lecher 2016 年 4 月 1 日 via Android
文档学得好就用不上。
不过写测试脚本很有用,做规范性的接口检测。 |
6
zhuangzhuang1988 2016 年 4 月 1 日
不好, 还不如 ts 来得爽。。 而且 python 中的默认参数也有坑。绑定在函数对象上, 而不是在函数代码中判断。
|
7
neoblackcap 2016 年 4 月 1 日
这个其实问题不大,暂时也还是文档的作用。毕竟之前成型一点的项目文档也是会写上类型参数的,同时实现里面还一大堆 assert
|
8
guyskk 2016 年 4 月 1 日
没什么用,顶多当作文档,动态类型有动态类型的特点,简单,灵活,不需要这些东西。
|
9
XIVN1987 2016 年 4 月 1 日
@ethego
在 iPython 里面做计算或学习库的时候为了简单一个变量名来回用,一个 d 刚开始赋值字符串,计算过程中赋值数组、 ndarray 各种类型的值随便赋,,静态类型怎么做到?? 难道在这种探索性学习、研究的时候还有考虑怎么给变量命名的问题吗?? |
10
Kilerd 2016 年 4 月 1 日
怎么感觉跟 Swift 越来越像了
管他呢,反正我是 py2 |
12
XIVN1987 2016 年 4 月 2 日 via Android
|
13
Frapples 2016 年 4 月 2 日
个人觉得用处还是很大的,一般需要动态语言的灵活性的地方不多,在不需要这种灵活性的地方用这种语法,大大减少了 bug 。
否则,就是一次 coding,到处 debug 了。。。 |
14
janxin 2016 年 4 月 2 日 via iPhone
现在都在看 type hint 吧
|
15
bdbai 2016 年 4 月 2 日 via Android
@zhuangzhuang1988 活捉传教士一枚
|
16
ethego 2016 年 4 月 2 日
@XIVN1987 你啊,不要总想着搞个大新闻,把静态类型批判一番, naive
Rust: https://play.rust-lang.org/?gist=8a301713d15d44d5a80c44d28d5d0c72&version=nightly&backtrace=0 Crystal: https://play.crystal-lang.org/#/r/vsl 这确实不叫赋值,叫重新绑定。对于结构体,你可以用泛型来做到,只需一点安全必要的牺牲。 iPython 那种 REPL ,现在很多静态语言都有啊。 |
18
lins05 2016 年 4 月 2 日
对 jedi 这种工具,还是有不少增强的 https://github.com/davidhalter/jedi/pull/661
|
20
pynix 2016 年 4 月 3 日
后期应该会给予这个做 jit 优化。
|
21
wizardforcel 2016 年 4 月 3 日 via Android
|