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

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.

主站蜘蛛池模板: 班戈县| 华蓥市| 稻城县| 大石桥市| 桂东县| 林周县| 裕民县| 抚松县| 遂溪县| 南木林县| 沽源县| 会宁县| 乌拉特后旗| 平远县| 绥宁县| 祁阳县| 绍兴市| 双峰县| 当阳市| 汕尾市| 望奎县| 岚皋县| 黄冈市| 青冈县| 昆明市| 杭州市| 香格里拉县| 龙门县| 五台县| 改则县| 睢宁县| 特克斯县| 孝昌县| 荃湾区| 铜梁县| 阿巴嘎旗| 潜江市| 扶绥县| 平定县| 乳山市| 泸州市|