以下示例显示了在函数调用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()
是一个内置函数,但它仍会抛出此错误?
答案 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>