这里:
from os.path import exists as foo
print foo.__name__
我们得到:'exists'
。
为什么不 'foo'
?哪个属性会给出 'foo'
?
最佳答案
您可以将 import foo as bar
视为一个作业。当您为函数分配另一个名称时,您不会期望函数更改其 __name__
属性。
>>> def foo(): pass
>>>
>>> foo.__name__
'foo'
>>> bar = foo
>>> bar.__name__
'foo'
Thanks. What attribute of the variable
bar
would return the string'bar'
then?
没有这样的属性。名称(bar
)单向引用值(函数对象)。
函数的 __name__
属性设置为使用
定义函数的名称
def ...
语法。这就是为什么如果您定义一个匿名函数并在创建后分配名称 foo
时,您不会获得有意义的 __name__
属性。
>>> foo = lambda: None
>>> foo.__name__
'<lambda>'
关于python - 为什么导入的函数 "as"另一个名称保留其原始__name__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53280530/