python:函数中带点号的函数变量,函数名前面

破烂

我需要理解这个概念,我们可以在函数定义中的变量名称中使用点(。)。这里没有类定义,也没有模块,Python不应该接受包含点的变量名。

def f(x):
    f.author = 'sunder'
    f.language = 'Python'
    print(x,f.author,f.language)

f(5)
`>>> 5 sunder Python`

请说明如何做到这一点,并建议相关文档以供进一步探索。

约翰_16

根据官方文件

程序员的注释:函数是一流的对象。在函数定义内执行的“ def”语句定义了可以返回或传递的局部函数。嵌套函数中使用的自由变量可以访问包含def的函数的局部变量。

因此,函数是一个对象:

>>> f.__class__
<class 'function'>
>>> f.__class__.__mro__
(<class 'function'>, <class 'object'>)

...,这意味着它可以存储属性:

>>> f.__dict__
{'language': 'Python', 'author': 'sunder'}
 >>> dir(f)
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'author', 'language']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章