官术网_书友最值得收藏!

Functional type systems

Some functional programming languages, such as Haskell and Scala, are statically compiled, and depend on declared types for functions and their arguments. To provide the kind of flexibility Python already has, these languages have sophisticated type-matching rules so that a generic function can be written, which works for a variety of related types.

In Object-Oriented Python, we often use the class inheritance hierarchy instead of sophisticated function type matching. We rely on Python to dispatch an operator to a proper method based on simple name-matching rules.

Since Python already has the desired levels of flexibility, the type matching rules for a compiled functional language aren't relevant. Indeed, we could argue that the sophisticated type matching is a workaround imposed by static compilation. Python doesn't need this workaround because it's a dynamic language.

Python 3 introduces type hints. These can be used by a program like mypy to discern potential problems with type mismatches. Using type hints is superior to using tests such ase  assert isinstance(a, int) to detect whether an argument value for the a parameter is an int. An assert statement is a runtime burden. Running mypy to validate the hints is generally part of ordinary quality assurance. It's a common practice to run mypy and pylint along with unit tests to confirm that software is correct.

主站蜘蛛池模板: 苏尼特左旗| 衡阳县| 河北省| 博客| 濮阳市| 金阳县| 周至县| 台湾省| 惠水县| 天台县| 伊春市| 潜山县| 和硕县| 炎陵县| 微山县| 乌恰县| 霍邱县| 宁安市| 隆安县| 垦利县| 民勤县| 明溪县| 汽车| 双江| 平舆县| 辉县市| 遵义市| 日土县| 华池县| 巴青县| 阿合奇县| 苍南县| 改则县| 荔波县| 诸城市| 新平| 横山县| 郯城县| 翁牛特旗| 新源县| 博白县|