Python中的类型检查支持?

在近十年之后,我只是重新学习Python。我学过
那时我的代码良好的偏执狂,所以一件事
我想补充我的python习惯是一种(a)使意图的方法
人类读者以统一的方式清除了类型;和
(b)尽早捕获任何类型错误。
我找到了" typecheck"模块(http://oakwinter.com/code/typecheck/),
但是我注意到它自2006年以来就没有更新,但不是
包含在Python分布中。还有其他模块吗
提供我应该考虑的类似功能?
另外,我可能会在某个时候考虑使用类似绒毛的工具...
是否有任何允许您声明一些额外类型的信息,
并在绒毛时检查了吗?
最后,我考虑的一件事是采用一些标识符
指示类型的前缀。也许" ifoo"用于整数," ffoo"
浮点数,字典的" D"," l"列表," t"
元组,对象的" o",而对于可能更多的变量类型的" v"
比上述一个。我聚集(仅几天的浏览)
这样的命名惯例在Python社区中并不常见,
但是这里还有其他人吗?我宁愿采用
现有标准(即使不是广泛使用),比组成一个标准。
非常感谢,
- 乔

# 回答1


乔·斯特劳特(Joe Strout)写道:
简短的答案是:
- 不要使用Typechecks,或者至少尽可能少 - 仅适用于
多态性。鸭子对良好的python代码很重要,不应该是
通过过多的类型进行阻止。
- 如果您不信任您的代码,请编写测试。实际上, *总是 *写
测试。它确实有助于更好地设计您的代码,节省时间
当需要重构或增强功能时 - 并捕获更多的错误
那个静态的打字 - 您的打字实际上甚至都不是静态的
因此,您需要测试以获取代码覆盖率。
- 不要采用这些愚蠢的微软对匈牙利符号的变态。
清晰,表达的变量名称 - 确定。带有前缀或指示
他们的种类,可能。但是使用ix或fx,所有一个人都关心的是x
持有数字无济于事。
diez
# 回答2


乔·斯特劳特(Joe Strout)
好的命名和文档。
关于"类型错误"的定义? - )
简而言之,鸭打字是pythonic的方法
事物。从经验来看,类型错误很少见,通常很快
发现并固定。除了处理用户输入时,不要
打扰防御风格的编码。只需写最少的必要
代码,只担心您以某种方式除外, *和 *可以
当地处理。
是:Unitests。
不是afaik。使用ABC和类型注释,这可能带有PY3K,但是
再一次,不必太担心这一点。
我知道这些建议听起来很可怕,声明性静态键入
吸毒者,但人/年的经验证明了鸭子打字
JustWork(TM)。因此,不要与语言作斗争,只会 你受苦的
无用的痛苦和挫败感。
不。
然后,您已经可以在每个标识符(包括
类和功能)带有" O",因为Python中的所有内容都是
目的 !-)
这不仅罕见,而且 - 就像无用的Typechecking一样 -
被认为是不好的形式。
标准编码约定在这里:http://www.python.org/dev/peps/pep-0008/
FWIW,Python非常依赖命名惯例。最好坚持
到pep8。
# 回答3


在6杆,16:19,乔·斯特劳特 顺便说一句,我昨天就开始使用Typecheck软件包。
不是我在典型的应用程序中使用它,而是我正在研究
将静态键入语言的映射到Python框架上
并行出现。因此,我必须重建
Python中的原始语言,但将Typecheck推迟到运行时。
到目前为止,我的印象混杂在一起。我偶然发现了一些奇怪的
在Typecheck中需要不计量源代码的失败
软件包可能会导致其他地方失败。我也遇到了障碍
使用方法而不是函数时。我也注意到
将两个字符串传递到一个funtcion:
@Accepts(数字,编号)
def add(x,y):
返回x+y
是可接受的行为。
从所有这些经验中,我都会对alpha的包装进行评分,我很难过
注意到这显然是放弃软件。我将继续使用它
尽管如此。
# 回答4


在消息中
<70**********************************@v72g2000hsv. GoogleGroups.com>,Kay
Schluehr写道:
在开源中,除非没有人关心
再也是。 :)

标签: python

添加新评论