python - 为什么导入的函数 "as"另一个名称保留其原始__name__?

标签 python function module python-import

这里:

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/

相关文章:

javascript - 在循环中调用图像会产生重叠变量

powershell - 函数在模块中使用时没有绑定(bind)

python - 得到警告 “TimeSeries broadcasting along DataFrame index by default is deprecated”

java - 创建aar文件并进行检查

python - dill.dump_session 在 jupyter 实验室中不起作用

python - 共享 X 轴时移除 imshow 周围的框

python - 如何使用带有 pyodbc 的 cursor.fetchall 从数据库中的行创建列表?

Python:json.loads 返回以 'u' 为前缀的项目

返回两个值的 C 函数

java - 如何动态调用java方法?