【发布时间】:2023-04-06 19:59:01
【问题描述】:
我了解,当这些功能指代其他功能时,内在名称被分配指代功能。 例如:f=max 是 f 的固有名称还是 max?
【问题讨论】:
-
“内在名称”是什么意思?
-
我不确定。这就是我需要澄清的原因。
标签: python function python-3.x
我了解,当这些功能指代其他功能时,内在名称被分配指代功能。 例如:f=max 是 f 的固有名称还是 max?
【问题讨论】:
标签: python function python-3.x
如果您指的是__name__ 属性,则它是在创建函数的def 语句中使用的名称。
Python 3.3.1 (v3.3.1:d9893d13c628, Apr 6 2013, 20:25:12) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def f ():
... return 0
...
>>> f.__name__
'f'
>>> g = f
>>> g.__name__
'f'
>>>
内置函数具有与其预设名称匹配的__name__ 属性。
>>> max.__name__
'max'
>>> h = max
>>> h.__name__
'max'
>>>
通过def 语句以外的其他方式创建的函数可能具有__name__ 属性的默认值。
>>> (lambda: 0).__name__
'<lambda>'
>>>
【讨论】:
您可以将固有名称视为用户定义的def 函数的名称。考虑两种将函数绑定到名称 square 的方法:
def square(x):
return x * x
在此def 语句中,创建函数和分配名称同时发生,此def 语句为函数提供了一个固有名称。 square 在这里是“功能广场”。
square = lambda x : x * x
而lambda 创建一个函数lambda x : x * x 没有名称。赋值语句square = 将函数的值赋给名称。 square 在这里是“函数 lambda”。
【讨论】:
最好看框架。
f = max
max = 3
f(2,3,4)
全局框架
f ----------------> func max(...) # 对象
最大:3
请注意,函数对象表示 max。那是内在的名字!
【讨论】: