大家是如何实时检查 Python 变量类型的?

2019-09-20 17:17:01 +08:00
 szzhiyang

我目前使用的 Python 实时类型检查方案是在 Microsoft Python Extension for VS Code 中启用 mypy --strict 检查,但是发现这个方案存在一些瑕疵,比如将鼠标悬停在某个变量名上方时 VS Code 不能详细提示它的类型(它只会把 Dict[str, int] 类型提示为 dict 类型)。

我还尝试过 PyCharm ,不过不知道是因为 PyCharm 本身做不到还是我没找对门路,我一直没能将它设置为实时使用 mypy 检查。

我现在想知道:




回复前必读:


5376 次点击
所在节点    Python
44 条回复
szzhiyang
2019-09-20 21:42:34 +08:00
@clino 你理解错我的意思了。😂
LokiSharp
2019-09-20 21:44:37 +08:00
@szzhiyang #19 要用 mypy
lance6716
2019-09-20 21:59:53 +08:00
这种 pyobject 强行检查类型又有多大用途呢…不如理清楚写码思路
szzhiyang
2019-09-20 22:07:26 +08:00
@lance6716 这么做的好处会随着项目规模的增长变得越发明显。
lance6716
2019-09-20 22:09:33 +08:00
@szzhiyang 那就不如换静态类型语言算了
szzhiyang
2019-09-20 22:11:02 +08:00
@lance6716 要是能换,我就不会发这个帖子了。
ClericPy
2019-09-20 22:18:40 +08:00
@szzhiyang 不知道了, Pycharm 尝试过 5 次迁移都放弃了... 现在常驻 vscode 的...


szzhiyang
2019-09-20 22:29:34 +08:00
@ClericPy 之前我一直以为用 PyCharm 写 Python 的体验就像用 Visual Studio 写 C# 那样,后来亲自尝试 PyCharm 后才发现我太天真了。😂
szzhiyang
2019-09-20 22:35:41 +08:00
@pakro888 但是没有 mypy 加成的 PyCharm 对变量类型的检查能力非常羸弱。
ClericPy
2019-09-20 22:38:59 +08:00
@szzhiyang 我用过 Pycharm, 比你说的强太多了... 肯定也有插件什么的吧, 那么复杂一东西, 内存比 vscode 还少... 挺厉害了, 还是不会用
yegle
2019-09-21 03:53:46 +08:00
Python 的类型检查当然是垃圾啊。你来写一个类型注解,参数类型支持 iterable of strings 但是 exclude str type。
ila
2019-09-21 08:05:36 +08:00
@expkzb 手动滑稽,me too
a719114136
2019-09-21 11:26:19 +08:00
为啥要检查,又不能带来性能提升。 至于减少 bug,我写 py 这么久还真没见过因为这个造成的 bug (这种类型的 bug 在早期测试的时候完全能发现)。
最多也就是函数的参数,返回值用 Type Hints 给个类型提示,函数里面那想咋用就咋用呗
szzhiyang
2019-09-21 12:59:45 +08:00
@a719114136 类型检查还是很有必要的,不然 TypeScript 就不会问世了。
szzhiyang
2019-09-21 13:04:12 +08:00
@ila 如果变量的数据类型比较复杂的话,比如 Dict[str, Set[int]],那就很难起变量名了。
billlee
2019-09-21 15:23:15 +08:00
弃坑上车 java
bakabie
2019-09-21 22:50:55 +08:00
弃坑上 Go (
sazima
2019-09-22 07:53:45 +08:00
目前我也有点迷, 一般都是这么写
user: User = session.query(User).first()
users: Sequence[User] = session.query(User).all()

def get_user_by_id(use_id: int) -> User:
....
laike9m
2019-09-22 10:26:32 +08:00
试试 Google 的 pytype 呢?
laike9m
2019-09-22 10:45:57 +08:00
@yegle 的确是个问题。没有 char 就算了这个不好改,但是我觉得 typing 应该加入 exclude types 支持。

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

https://tanronggui.xyz/t/602617

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

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

© 2021 V2EX