>>> 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
这新功能简直是福音啊!
|  |      1oyjc      2016-04-01 21:22:53 +08:00 有啥用吗?为了静态编译? | 
|      3lecher      2016-04-01 21:29:11 +08:00 via Android 文档学得好就用不上。 不过写测试脚本很有用,做规范性的接口检测。 | 
|  |      4ethego      2016-04-01 21:35:33 +08:00 @lecher 我觉得这么搞还不如静态类型+类型推断来的好,事实证明动态类型是一条歧路,好的类型推断已经能足够取得几乎一切动态类型的优势了。 | 
|  |      6zhuangzhuang1988      2016-04-01 22:35:53 +08:00 不好, 还不如 ts 来得爽。。 而且 python 中的默认参数也有坑。绑定在函数对象上, 而不是在函数代码中判断。 | 
|      7neoblackcap      2016-04-01 22:36:56 +08:00 这个其实问题不大,暂时也还是文档的作用。毕竟之前成型一点的项目文档也是会写上类型参数的,同时实现里面还一大堆 assert | 
|  |      8guyskk      2016-04-01 23:28:09 +08:00 没什么用,顶多当作文档,动态类型有动态类型的特点,简单,灵活,不需要这些东西。 | 
|  |      9XIVN1987      2016-04-01 23:50:12 +08:00 @ethego  在 iPython 里面做计算或学习库的时候为了简单一个变量名来回用,一个 d 刚开始赋值字符串,计算过程中赋值数组、 ndarray 各种类型的值随便赋,,静态类型怎么做到?? 难道在这种探索性学习、研究的时候还有考虑怎么给变量命名的问题吗?? | 
|  |      10Kilerd      2016-04-01 23:58:53 +08:00 怎么感觉跟 Swift 越来越像了     管他呢,反正我是 py2 | 
|  |      11ethego      2016-04-02 02:16:08 +08:00 @XIVN1987 这些类型推断也可以做到。数组的话你需要考虑并集和泛型的问题,但是就算是动态类型,你一样也需要思考这些,不然程序未免不出 bug | 
|  |      12XIVN1987      2016-04-02 08:04:40 +08:00 via Android | 
|      13Frapples      2016-04-02 09:36:43 +08:00 个人觉得用处还是很大的,一般需要动态语言的灵活性的地方不多,在不需要这种灵活性的地方用这种语法,大大减少了 bug 。 否则,就是一次 coding,到处 debug 了。。。 | 
|  |      14janxin      2016-04-02 10:28:52 +08:00 via iPhone 现在都在看 type hint 吧 | 
|  |      15bdbai      2016-04-02 10:39:45 +08:00 via Android @zhuangzhuang1988 活捉传教士一枚 | 
|  |      16ethego      2016-04-02 11:31:01 +08:00 @XIVN1987 你啊,不要总想着搞个大新闻,把静态类型批判一番, naive Rust: https://play.rust-lang.org/?gist=8a301713d15d44d5a80c44d28d5d0c72&version=nightly&backtrace=0 Crystal: https://play.crystal-lang.org/#/r/vsl 这确实不叫赋值,叫重新绑定。对于结构体,你可以用泛型来做到,只需一点安全必要的牺牲。 iPython 那种 REPL ,现在很多静态语言都有啊。 | 
|  |      18lins05      2016-04-02 11:54:46 +08:00 对 jedi 这种工具,还是有不少增强的 https://github.com/davidhalter/jedi/pull/661 | 
|  |      20pynix      2016-04-03 04:41:52 +08:00 后期应该会给予这个做 jit 优化。 | 
|  |      21wizardforcel      2016-04-03 13:15:06 +08:00 via Android |