我是python的初学者。我学会了一个函数具有名为__name__
和__qualname__
的属性,它们是可写的。
我更改了名称和资格名称的值。例如,
def person(name):
print(name)
person.__name__ = 'man'
person.__qualname__ = 'man'
然后我试着致电man('jessi')
,翻译报告name 'man' is not defined
所以我的问题是,改变__name__
的价值是什么意思
无论如何,提前谢谢你
答案 0 :(得分:1)
更改__name__
的值会更改函数的表示形式,而不是其功能。观察:
>>> def person(name):
... print(name)
...
>>> person.__name__
'person'
>>> print(person)
<function person at 0x10030bc08>
>>> person.__name__ = 'man'
>>> print(person)
<function man at 0x10030bc08>
请注意,这只适用于Python 2.7 - 在Python 3中,您使用的是.__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>