为什么我不能在map()中使用字符串函数?

时间:2012-06-07 04:57:50

标签: python string map python-3.x

以下示例显示了在函数调用map中使用字符串函数时遇到的错误。我需要帮助解决为什么会这样。感谢。

>>> s=["this is a string","python python python","split split split"]
>>> map(split,s)
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    map(split,s)
NameError: name 'split' is not defined

尽管split()是一个内置函数,但它仍会抛出此错误?

2 个答案:

答案 0 :(得分:14)

如果您使用str.split()

,它将正常工作

即,

s = ["this is a string","python python python","split split split"]
map(str.split, s)

给出:

[['this', 'is', 'a', 'string'],
 ['python', 'python', 'python'],
 ['split', 'split', 'split']]

错误消息指出: NameError: name 'split' is not defined ,因此解释程序无法识别split,因为split不是built-in function。为了实现此目的,您必须将split与内置的str对象相关联。

更新:根据@ Ivc的有用的评论/建议改进了措辞。

答案 1 :(得分:2)

split不是内置函数,但str.split是内置对象的方法。通常,您会将split称为str对象的方法,这就是它直接绑定的原因。

检查解释器的输出:

>>> str
<type 'str'>
>>> str.split
<method 'split' of 'str' objects>