id是python内置函数吗?

2024-09-29 23:27:29 发布

您现在位置:Python中文网/ 问答频道 /正文

请看下面的代码好吗

def getCrewListAll(self):
    """
    Set to crew list to all available crew
    """
    crew = getIdNumbers()
    return map(lambda cr: cr.id, crew)

这里cr.id是什么意思,id是一个内置的python函数还是?在


Tags: to代码selfidmapreturndefall
3条回答

cr.id不是一个内置函数(除非您将其指定为…),它是cr对象的普通成员。在

id(cr)将是对该内置项的调用,并将返回cr的标识。在

在您的示例中,对cr.id的引用不是函数调用。它访问cr变量的成员属性,该属性是crew对象的占位符。在

idis the name of a builtin function,是的。但是如果没有看到实际的类定义,就无法知道它是否在这些对象中被暗地使用。在

举个例子。。。如果这是一个django应用程序,那么模型实例具有id成员属性,这些属性为您提供该记录的数据库id。它是该框架类设计的一部分。在

即使我假设这是一种属性。。。据我们所知,它也可能是一个computed property,它类似于一个类似于属性的方法调用。当你看你的例子时,它可以做更多的逻辑。在

最后,由于cr.id可以是任何东西,它甚至可以是一个方法,并且映射返回一个可调用列表:cr.id()

我认为真正的问题是你不明白你发布的代码。 在这种情况下,您需要理解map和{}。在

^{}是一个函数,它将函数应用于列表的每个元素,并将其作为列表返回:

>>> def func(a):
...   return a * 2
...
>>> map(func, [1,2,3])
[2, 4, 6]

^{}可以看作是创建函数的快捷方式。以上内容可以用lambda编写:

^{2}$

所以您的代码map(lambda cr: cr.id, crew)在做什么:它从列表crew中的每个对象返回一个id属性列表。在

问题是这段代码实际上不是很好。您可以用list comprehension编写相同的函数,这更直观:

def getCrewListAll(self):
    return [cr.id for cr in getIdNumbers()]

相关问题 更多 >

    热门问题