您的位置:首页 > 编程语言 > Python开发

流畅的python 第5章:一等函数

2018-01-31 17:16 162 查看
在 Python 中,函数是一等对象。编程语言理论家把“一等对象”定义为满足下述条件的程

序实体:

    * 在运行时创建

    * 能赋值给变量或数据结构中的元素


    * 能作为参数传给函数
    * 能作为函数的返回结果

在 Python 中,整数、字符串和字典都是一等对象

1.把函数视作对象

  在 Python 中,所有函数都是一等对象, 函数可以赋值给变量,可以当作参数传递给其实函数

  示例创建一个函数并调用它的__doc__属性

 

>>> def factorial(n):
'''returns n!'''
return 1 if n < 2 else n * factorial(n-1)

>>> factorial(42)
1405006117752879898543142606244511569936384000000000L
>>> factorial.__doc__
'returns n!'
>>>
   

2.高阶函数

    接受函数为参数,或者把函数作为结果返回的函数是高阶函数,

    例如map,filter, sorted等内置函数。

>>> fruits = ['strawberry', 'fig', 'apple', 'cherry', 'raspberry', 'banana']
>>> sorted(fruits, key=len)
['fig', 'apple', 'cherry', 'banana', 'raspberry', 'strawberry']
>>>
fileList = list(filter(lambda _ : _ not in ('__init__.py','.') and _.endswith('.py'),os.listdir(r'c:\py\')))


3.可调用对象

   

除了用户定义的函数, 调用运算符即
()
还可以应用到其他对象上. 如果像判断对象能否被调用, 可以使用内置的
callable()
函数进行判断. python的数据模型中有7种可是可以被调用的:

用户定义的函数: 使用def语句或lambda表达式创建
内置函数:如len
内置方法:如dict.get
方法:在类定义体中的函数

类的实例: 如果类定义了
__call__
, 那么它的实例可以作为函数调用.
生成器函数: 使用
yield
关键字的函数或方法
      __call__:

     def __call__(self):
return self.__dict__

       可变参数和关键字参数:
def fun(name, age, *args, **kwargs):
pass
     *args 和 **kwargs 都是可迭代对象, 展开后映射到单个参数. args是个元组, kwargs是字典.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: