此问题在此处已有答案:
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__
属性试图告诉我一些东西,但我不知道是什么。我能深入了解这个设计选择背后的基本原理吗?
1条答案
按热度按时间qq24tv8q1#
Lambda函数也被称为 anonymous,意思是“未命名或未标识”(https://www.merriam-webster.com/dictionary/anonymous)。
这和没有
__name__
属性是一样的,这对于一个在代码中其他地方不会重用的小函数来说是有意义的。当将一个函数赋值给变量时,变量只是函数的引用,这就是为什么它有相同的name属性。