为什么Python函数有__name__?

bwntbbo3  于 6个月前  发布在  Python
关注(0)|答案(1)|浏览(44)

此问题在此处已有答案

Python class variable name vs name(4个回答)
use name as attribute(1个回答)
Get lambda function's name as string(4个回答)
9小时前关闭
截至9小时前,社区正在审查是否重新讨论这个问题。
我对python函数默认的属性__name__感到困惑。让我们考虑以下代码:

def foo():
    return None

print(foo.__name__)

字符串
代码将按预期打印'foo'。有点多余,但我猜为什么不呢。然而,如果我们添加以下内容:

bar = foo
print(bar.__name__)


上面的代码还打印了'foo'。从对象和属性的Angular 来看,这是完全有意义的。从命名约定的Angular 来看,这是令人困惑的。
最后,下面的代码

baz = lambda:None
print(baz.__name__)


打印“,这是几乎没有信息。
我觉得__name__属性试图告诉我一些东西,但我不知道是什么。我能深入了解这个设计选择背后的基本原理吗?

qq24tv8q

qq24tv8q1#

Lambda函数也被称为 anonymous,意思是“未命名或未标识”(https://www.merriam-webster.com/dictionary/anonymous)。
这和没有__name__属性是一样的,这对于一个在代码中其他地方不会重用的小函数来说是有意义的。
当将一个函数赋值给变量时,变量只是函数的引用,这就是为什么它有相同的name属性。

相关问题