a def 在函数中的用法是什么?
What's the usage of a a def in a function?
只是阅读 Python 文档,特别是 this 页面,关于 attrgetter 和 itemgetter。
我很难理解代码示例中 def
和 return
的用法。 不是这些函数的用法。
好像是lamdba
,但不知道怎么解释
编辑
我认为它只是点击了。 attrgetter 就像 resolve_attr 函数的构造函数?这有点令人困惑,因为我通常希望 def 的代码位于 def
和 return
之间。 return 上的代码就像一个 lambda。更让人困惑的是,arg ojb
是传递给 returned 对象的参数。啊啊啊……
我需要知道什么才有意义?
这是我所指的代码示例:
def attrgetter(*items):
if any(not isinstance(item, str) for item in items):
raise TypeError('attribute name must be a string')
if len(items) == 1:
attr = items[0]
def g(obj): #What is this
return resolve_attr(obj, attr)
else:
def g(obj):#And this?
return tuple(resolve_attr(obj, attr) for attr in items)
return g
def resolve_attr(obj, attr):
for name in attr.split("."):
obj = getattr(obj, name)
return obj
def
是定义函数的关键字。
这些只是在另一个函数中定义的函数 attrgetter()
这就是为什么 attrgetter()
中有多个 return
g
看起来像 lambda
因为 attrgetter()
returns 是一个函数,而不是直接的结果。
g
确实可以用 lambda 声明代替。
在Python中,函数就像普通对象一样。您可以传递它们,并且(如上例所示)return 来自其他函数的它们。
示例函数,return另一个函数作为它的return值。它通过定义一个函数(即 def g(ojb):
行)然后简单地 returning 它来实现。
您可以这样做,因为在 Python 中 - 函数就像任何其他对象一样。
只是阅读 Python 文档,特别是 this 页面,关于 attrgetter 和 itemgetter。
我很难理解代码示例中 def
和 return
的用法。 不是这些函数的用法。
好像是lamdba
,但不知道怎么解释
编辑
我认为它只是点击了。 attrgetter 就像 resolve_attr 函数的构造函数?这有点令人困惑,因为我通常希望 def 的代码位于 def
和 return
之间。 return 上的代码就像一个 lambda。更让人困惑的是,arg ojb
是传递给 returned 对象的参数。啊啊啊……
我需要知道什么才有意义?
这是我所指的代码示例:
def attrgetter(*items):
if any(not isinstance(item, str) for item in items):
raise TypeError('attribute name must be a string')
if len(items) == 1:
attr = items[0]
def g(obj): #What is this
return resolve_attr(obj, attr)
else:
def g(obj):#And this?
return tuple(resolve_attr(obj, attr) for attr in items)
return g
def resolve_attr(obj, attr):
for name in attr.split("."):
obj = getattr(obj, name)
return obj
def
是定义函数的关键字。
这些只是在另一个函数中定义的函数 attrgetter()
这就是为什么 attrgetter()
return
g
看起来像 lambda
因为 attrgetter()
returns 是一个函数,而不是直接的结果。
g
确实可以用 lambda 声明代替。
在Python中,函数就像普通对象一样。您可以传递它们,并且(如上例所示)return 来自其他函数的它们。
示例函数,return另一个函数作为它的return值。它通过定义一个函数(即 def g(ojb):
行)然后简单地 returning 它来实现。
您可以这样做,因为在 Python 中 - 函数就像任何其他对象一样。