5

次の例は、マップする関数呼び出し内で文字列関数を使用しようとしたときに発生するエラーを示しています。なぜこれが起こっているのか助けが必要です。ありがとう。

>>> 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()が、それでもこのエラーがスローされますか?

4

2 に答える 2

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、インタプリタは認識しません。これを機能させるには、組み込みオブジェクトに関連付ける必要があります。splitsplitsplitstr

更新:@Ivcの有益なコメント/提案に基づいて文言が改善されました。

于 2012-06-07T05:00:41.210 に答える
2

split組み込み関数ではありませんが、組み込みstr.splitオブジェクトのメソッドです。通常、split はオブジェクトのメソッドとして呼び出すstrため、直接バインドされています。

インタープリターからの出力を確認します。

>>> str
<type 'str'>
>>> str.split
<method 'split' of 'str' objects>
于 2012-06-07T05:06:10.747 に答える