我是python的初学者。我了解到一个函数具有名为__name__
和__qualname__
的属性,并且它们是可写的。
我更改了name和qualname的值。例如,
def person(name):
print(name)
person.__name__ = 'man'
person.__qualname__ = 'man'
然后我试着打电话给man('jessi')
,翻译报告name 'man' is not defined
。
所以我的问题是,更改__name__
的值有什么意义
无论如何,先谢谢你。
发布于 2018-05-31 17:12:25
更改__name__
的值会更改函数的表示形式,而不是其功能。请注意:
>>> def person(name):
... print(name)
...
>>> person.__name__
'person'
>>> print(person)
<function person at 0x10030bc08>
>>> person.__name__ = 'man'
>>> print(person)
<function man at 0x10030bc08>
请注意,这只发生在Python2.7中-在Python3中,您将使用.__qualname__
。同样的行为也会发生在__qualname__
上
>>> def person(name):
... def child():
... return 'Hello child of ' + name
... return child
>>> result = person("Me!")
>>> print(result)
<function person.<locals>.child at 0x103b45048>
>>> result.__qualname__
'person.<locals>.child'
>>> result.__name__
'child'
>>> result.__qualname__ = 'new qualname result'
>>> result.__qualname__
'new qualname result'
>>> print(result)
<function new qualname result at 0x101bb6e18>
https://stackoverflow.com/questions/50620594
复制相似问题