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

First-class functions

Functional programming is often succinct and expressive. One way to achieve it is by providing functions as arguments and return values for other functions. We'll look at numerous examples of manipulating functions.

For this to work, functions must be first-class objects in the runtime environment. In programming languages such as C, a function is not a runtime object. In Python, however, functions are objects that are created (usually) by the def statements and can be manipulated by other Python functions. We can also create a function as a callable object or by assigning lambda to a variable.

Here's how a function definition creates an object with attributes:

>>> def example(a, b, **kw):
...    return a*b
...
>>> type(example)
<class 'function'>
>>> example.__code__.co_varnames
('a', 'b', 'kw')
>>> example.__code__.co_argcount
2

We've created an object, example, that is of the function() class. This object has numerous attributes. The __code__ object associated with the function object has attributes of its own. The implementation details aren't important. What is important is that functions are first-class objects and can be manipulated just like all other objects. We previously displayed the values of two of the many attributes of a function object.

主站蜘蛛池模板: 象山县| 莱阳市| 玉田县| 盘锦市| 集安市| 库车县| 乐昌市| 合江县| 威信县| 东安县| 凤庆县| 福清市| 丽江市| 新绛县| 孟州市| 福鼎市| 左云县| 新巴尔虎右旗| 徐汇区| 嘉禾县| 平山县| 克东县| 鄂州市| 交口县| 皋兰县| 扶绥县| 易门县| 利津县| 桦甸市| 大化| 昌都县| 房产| 华宁县| 新竹市| 万州区| 木里| 二手房| 囊谦县| 登封市| 蓬溪县| 册亨县|