python函数有属性吗

这个可以直接给出一个肯定的回答: 有。

在c语言等开发者来看,函数有属性是不可想象和难以理解的。但假设我们有这样一个 需求,要求函数和其函数说明必须任何时候在一起。c语言本身就不支持该功能。python 语言就支持这个功能,他就是通过函数的文档属性”__doc__”来实现的。例如id()函数, 我们知道其是获取对象的标识,我们查看其文档确认一下是否正确

>>> id.__doc__
"Return the identity of an object.\n\nThis is guaranteed to be unique among
simultaneously existing objects.\n(CPython uses the object's memory address.)"
>>>

看来我们理解的正确,查看其文档属性的方法还有help()函数

>>> help(id)
Help on built-in function id in module builtins:

id(obj, /)
    Return the identity of an object.

    This is guaranteed to be unique among simultaneously existing objects.
    (CPython uses the object's memory address.)

help函数输出的就是id()函数的文档字符串属性。

如何给函数增加属性

在函数体内部不能给函数增加属性,在函数定义完成之后,可以给函数增加属性,如下所示,增加了 book属性,这里仅作为示例,没有实际的用途

def fn():
    pass

fn.book="openwrt"
print(fn.book)

函数属性就像是创建了一个名字空间,我们可以自由的在里面增加变量。但通常我们都是和函数相关 的内容,比如函数的单元测试,函数的文档说明,函数版本等等。