返回介绍

2.4 有用的工具:type、dir 和 help

发布于 2024-01-27 21:43:11 字数 4183 浏览 0 评论 0 收藏 0

Python 标准库中有几个内置工具,可以帮你确定变量的数据类型或对象类型,并给出这些变量能做的事情(即它们都有哪些方法)。本节将学习三个工具,它们都是 Python 标准库的一部分。

2.4.1 type

type 可以帮你确定你的对象属于哪种数据类型。想在 Python 代码中做到这一点,将变量放到 type() 的括号里,例如,如果变量名是 dogs,那就在 Python 提示符后输入 type(dogs)。当你用变量保存数据,并想知道变量里的数据是什么类型时,这一方法是非常有用的。回忆本章前面邮政编码的例子。

对于值 20011,这里有两种不同的用法。在第一个例子中,它是保存成字符串的邮编。在第二个例子中,它是一个整数:

'20011'
20011

如果将这两个值保存在变量中,将更难以确定变量的类型,我们可能不知道或不记得用的是字符串还是整数。

如果将值传递给内置方法 type,Python 就会告诉我们对象属于那种数据类型。试一下:

type('20011')
type(20011)

第一行返回的是 str,第二行返回的是 int。将列表传递给 type 会返回什么?变量呢?

在你试图排查错误时,或者运行其他人的代码时,确定对象的类型是很有用的。还记得我们试图从一个列表中减去另一个列表吗(见 2.3.2 节)?好吧,你也不能从一个字符串中减去另一个字符串。所以,与整数 20011 相比,字符串 '20011' 具有许多不同的方法以及用例。

2.4.2 dir

dir 会返回一个内置方法与属性的列表,帮你列出特定数据类型能做的所有事情。我们用字符串 'cat,dog,horse' 来试一下:

dir('cat,dog,horse')

暂时忽略返回的列表中开头的那些项(以双下划线开头的那些字符串)。这些是 Python 使用的内部方法或私有方法

最有用的方法包含在返回列表的第二部分。许多方法的用途显而易见,或者说是自说明的(self-documenting)。你应该会看到本章前面使用的一些字符串方法:

[...,
'__sizeof__',
'__str__',
'__subclasshook__',
'_formatter_field_name_split',
'_formatter_parser',
'capitalize',
'center',
'count',
'decode',
'encode',
'endswith',
'expandtabs',
'find',
'format',
'index',
'isalnum',
'isalpha',
'isdigit',
'islower',
'isspace',
'istitle',
'isupper',
'join',
'ljust',
'lower',
'lstrip',
'partition',
'replace',
'rfind',
'rindex',
'rjust',
'rpartition',
'rsplit',
'rstrip',
'split',
'splitlines',
'startswith',
'strip',
'swapcase',
'title',
'translate',
'upper',
'zfill']

看一下字符串 'cat,dog,horse',它看起来像是保存在字符串里的列表。实际上它是单一值,但利用 Python 字符串内置的 split 方法,我们可以以逗号为分隔符,将字符串切分成更小的字符串,像这样:

'cat,dog,horse'.split(',')

Python 将返回一个列表:

['cat', 'dog', 'horse']

下面对这个列表调用 dir 函数:

dir(['cat', 'dog', 'horse'])

和字符串相比,列表可选的方法没有那么多,但我们来尝试其中几个。首先,将列表转化为变量。你现在应该知道如何将列表赋值给变量,这是一个例子:

animals = ['cat', 'dog', 'horse']

前面用 dir 作用在列表上给出了许多新方法,现在在变量 animals 上试用其中一些方法:

animals.reverse()
animals.sort()

运行每一行代码后,打印输出 animals 的值,这样你就能看出这些方法是如何改变列表的。你预期的输出是什么样的?它与你看到的相同吗?尝试将 dir 方法作用在整数和浮点数上。(提示:dir 只能传入一个对象,所以试着输入 dir(1) 或 dir(3.0))。其中有没有你没有想到的方法?

如你所见,dir 可以让你深入了解每一种 Python 数据类型的内置方法。在利用 Python 进行数据处理时,这些方法是很有价值的。建议你花时间对感兴趣的上表列出的方法都尝试一下,并用不同的数据类型测试更多的方法。

2.4.3 help

本章要学习的第三个有用的 Python 内置方法是 help 方法。这一方法会返回对象、方法或模块的文档——虽然经常以技术性很强(有时很难懂)的文字书写。来看一下 split 方法的帮助文档,这是我们在前一节用过的方法。如果你不知道需要将字符串的分隔符放在括号内,怎么能知道如何使用 Python 字符串的 split 方法呢?假设我们不知道如何使用 split,不传入 ',' 来调用这一方法:

animals = 'cat,dog,horse'
animals.split()

代码的返回值如下:

['cat,dog,horse']

看起来不错,对吧?但经不起仔细观察。正如我们所见,Python 将字符串转换成一个列表,但并没有利用逗号对多个单词进行分割。这是因为内置的 split 方法默认按空格分割字符串,不是按逗号分割。我们需要在方法中传入一个逗号字符串(','),来告诉 Python 按逗号对字符串进行分割。

为了帮助理解这个方法是如何工作的,我们将其传递给 help。前面把变量 animals 变成了列表,所以首先我们必须重新定义这个变量。我们把它变回字符串,然后查看 split 的工作原理:

animals = 'cat,dog,horse'
help(animals.split) ➊

❶ 本行代码将 animals.split(没有 ())传递给 help 方法。你可以向 help 方法中传入任何对象、方法或模块,但如前所见,在传入方法时不应该把尾部的括号也包括进去。

Python 的返回值如下:

split(...)
  S.split([sep [,maxsplit]]) -> list of strings

  Return a list of the words in the string S, using sep as the
  delimiter string.  If maxsplit is given, at most maxsplit
  splits are done. If sep is not specified or is None, any
  whitespace string is a separator and empty strings are removed
  from the result.

帮助文档的第一行说的是:S.split([sep [,maxsplit]]) → list of strings。翻译成汉语,这告诉我们,对于字符串(S),我们有一个方法(split)、第一个可选参数(也就是可以传入的对象)sep 以及第二个可选参数 maxsplit。参数名两边的方括号([])表明它们是可选的,不是必需的。这个方法返回(->)一个字符串列表。

下一行说的是:"Return a list of the words in the string S,using sep as the delimiter string." sep 是被传入 split 方法的参数,作用是分隔符(seperator)。分隔符(delimiter)是用来分割字段的单个字符或一串字符。例如,在一个逗号分隔文件中,逗号就是分隔符。逗号还是我们所创建字符串的分隔符,因为它把我们希望出现在列表中的单词分隔开。

 阅读完帮助文档后(利用方向键上下翻页),你可以输入 q 退出 help。

help 文档还告诉我们,如果没有指定其他分隔符,默认的分隔符是空白。这告诉我们,如果我们有一个字符串 'cat dog horse',split 方法不需要我们在 () 内传入分隔符。如你所见,内置的 help 函数可以告诉你许多关于如何使用某个方法的内容,还可以告诉你这个方法是否适合你正在解决的问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文