所以我只是在学习python是如何工作的,我对如何使用一些函数有点困惑。我知道当我浏览列表目录dir(list)
时,我会得到一个列表,列出我在这个模块中可以做的所有功能。但在实践中(我的控制台(,我无法获得相同的语法来处理目录中列出的__count__
和__len__
函数。
步骤:
dir(list)
#获取列表模块中可用的所有功能x = ['red', 'blue', 'green', 'yellow', 'black', 'cyan']
#定义列表list.count(x,'blue')
#使用列表模块内的计数功能list.len(x)
#尝试使用相同的语法,但收到错误len(x)
#给我列表中的项目数
如果len
和count
是同一个list
模块目录的一部分,为什么运行它们的语法不同?
像__len__
这样有下划线的方法通常是"神奇的方法";实现python功能并且通常不显式调用的。您可以在数据模型中找到描述。例如,当你使用len()
函数时,python会调用obj.__len__()
来实现它。类似于obj1 + obj2
:加法可能会变成对obj1.__add__(obj2)
的调用。这就是python实现其动态特性的方式。对象可以自己选择操作的含义。
count
方法不同。它在python列表中实现,用于计算对象在列表中出现的次数。对于所有对象来说,这并不是一件通常有用的事情,所以python并没有为它实现一个神奇的方法
毫不奇怪,不同的方法需要用不同的参数来调用——它们做不同的事情。通常,方法不是通过它们的类+实例来调用的。只需使用实例即可。
>>> x = ['red', 'blue', 'green', 'yellow', 'black', 'cyan']
>>> list.count(x, 'blue') == x.count('blue') # count instances of "blue"
True
>>> list.__len__(x) == len(x) # get list length
True