习惯了静态类型语言,这两天写 Python ,每个函数开始时都带一坨 assert isinstance ...

2018-08-04 11:19:10 +08:00
 metorm

写的是一个简单的物理仿真计算程序。这算好习惯还是坏习惯? 养成这个习惯是因为有一次被 numpy 的 1x1 数组坑了好久……

5910 次点击
所在节点    Python
35 条回复
Trim21
2018-08-04 13:19:30 +08:00
@lihongjie0209 map 是最难受的,找不到一个办法能标注自己到底有哪些 key,看了 typing 的文档里也没有…
lihongjie0209
2018-08-04 13:26:24 +08:00
@orangeade #19 你说的是 Java 10 Local Variable Type Inference, 随手 google 了一下

https://developer.oracle.com/java/jdk-10-local-variable-type-inference


Clearly, defining types for fields and method signatures enforces a contract that needs to be respected and this helps with maintenance as well as understanding. However, declaring types for intermediate expressions may feel less useful and cumbersome.

这篇文章我没看完, 但是看到这里你大概知道了 java 的 var 关键词是用来干嘛的了吧.


其次, 一个语言支持的特性要全都用上吗? 我不这么认为, 我的变量都是后期 refactor 出来的, IDE 自动提取, 至于说 IDE 帮我生成的是 var 还是具体类型, 我是一点都关心
lihongjie0209
2018-08-04 13:28:01 +08:00
@Trim21 #21 我之前写个脚本都快被搞崩溃了, 更别说大项目中使用 map 了, Java 好一点, 大家都会定义一个类, 也不是强制要求,但是大部分编码规范是这样的
Cbdy
2018-08-04 13:49:51 +08:00
随着各类程序设计工具的完善,动态语言引以为傲的简洁与动态性的优势渐渐消失,甚至在大多数时候成为鸡肋。容易注意到,现在流行的新语言都拥有静态类型系统,而早年流行的动态语言,也渐渐加上了静态类型的帽子(或方言),以便分析工具进行静态分析,把错误消除在编程阶段
Raymon111111
2018-08-04 14:06:06 +08:00
动态类型语言只能写小东西

大一点查问题查死你
justdoit123
2018-08-04 16:23:14 +08:00
借用王垠的一句话:“竟然还有五头的人”
justdoit123
2018-08-04 16:23:34 +08:00
copie
2018-08-05 01:26:43 +08:00
Python 的思想不应该是能运行 Python 解释器会想一切办法运行,不能运行就抛出异常。在代码里面放太多的类型检查会导致代码异味。
lolizeppelin
2018-08-05 03:00:15 +08:00
我觉得是你结构设计问题

openstack 那么大项目都没这么搞


一般的克通用的函数检查接口用装饰器就完了
janxin
2018-08-05 08:19:32 +08:00
q397064399
2018-08-05 09:34:40 +08:00
定位不清晰啊,老铁,Python 的定位就是 灵活 脚本,把它该干好的事情 干好就行了
老想着用一门语言 解决所有问题 ,不是傻就是蠢
tohearts
2018-08-05 10:57:33 +08:00
31 楼老哥说的对
lrxiao
2018-08-05 10:59:06 +08:00
mypy 这种检查一遍项目
PythonAnswer
2018-08-05 11:58:18 +08:00
需要良好的命名习惯和 docstring

写脚本迅速解决问题 跟 工程化应用 场景完全不一样
metorm
2018-08-05 13:53:01 +08:00
@q397064399 以后不这么搞了。这次这样搞是因为以前学 Python 时把一个很复杂的基础方程组写在 Python 里面了,懒得改……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/476799

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX