如果我更改函数的__name__会发生什么

时间:2018-05-31 09:08:49

标签: python

我是python的初学者。我学会了一个函数具有名为__name____qualname__的属性,它们是可写的。

我更改了名称资格名称的值。例如,

def person(name):
print(name)

person.__name__ = 'man'
person.__qualname__ = 'man'

然后我试着致电man('jessi'),翻译报告name 'man' is not defined 所以我的问题是,改变__name__的价值是什么意思 无论如何,提前谢谢你

1 个答案:

答案 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>