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