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

Familiar territory

One of the ideas that emerged from the previous list of topics is that most functional programming is already present in Python. Indeed, most functional programming is already a very typical and common part of OOP.

As a very specific example, a fluent Application Program Interface (API) is a very clear example of functional programming. If we take time to create a class with return self() in each method function, we can use it as follows:

some_object.foo().bar().yet_more()

We can just as easily write several closely related functions that work as follows:

yet_more(bar(foo(some_object)))

We've switched the syntax from traditional object-oriented suffix notation to a more functional prefix notation. Python uses both notations freely, often using a prefix version of a special method name. For example, the len() function is generally implemented by the __len__() class special method.

Of course, the implementation of the preceding class might involve a highly stateful object. Even then, a small change in viewpoint may reveal a functional approach that can lead to more succinct or more expressive programming.

The point is not that imperative programming is broken in some way, or that functional programming offers a vastly superior technology. The point is that functional programming leads to a change in viewpoint that can, in many cases, be helpful for designing succinct, expressive programs.

主站蜘蛛池模板: 泰顺县| 洪雅县| 霸州市| 汉沽区| 疏附县| 巴南区| 苏尼特右旗| 新河县| 双桥区| 弥渡县| 东台市| 綦江县| 米脂县| 禹州市| 隆昌县| 甘德县| 朝阳市| 京山县| 长宁县| 普定县| 榆中县| 安新县| 东港市| 克山县| 斗六市| 壶关县| 陆河县| 堆龙德庆县| 宜良县| 全州县| 萝北县| 姚安县| 建湖县| 舟曲县| 吉安县| 涿鹿县| 汤阴县| 西乌珠穆沁旗| 石城县| 瓦房店市| 定西市|