以下示例顯示了我在嘗試使用函數調用中的字符串函數進行映射時遇到的錯誤。我需要幫助,爲什麼發生這種情況。謝謝。爲什麼我不能在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()
是一個內置函數,但它仍然會拋出這個錯誤?
啊!我明白了,'split()'是一種與對象類型相關的方法(不同於'string','re'等),並且不是一個內置函數,所以我需要指定對象類型來消除歧義。 –
這不是爲了消除歧義,而是因爲它的字符串方法 - ''blah'.split('a')'等價於'str.split('blah','a')',與'instanceofmyclass .mymethod(arg)'相當於'MyClass.mymethod(instanceofmyclass,arg)' - 該字符串是'str.split'的'self'參數。 – lvc
這是一種醜陋。我寧願像方法一樣調用方法,例如'map(lambda x:x.split(),s)',或者更好一些,就去''[x.split()for s]' –