string.joinはどのように解決されますか?私はそれを以下のように使ってみました:
import string
list_of_str = ['a','b','c']
string.join(list_of_str.append('d'))
しかし、代わりにこのエラーが発生しました(2.7.2とまったく同じエラー):
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/string.py", line 318, in join
return sep.join(words)
TypeError
list_of_stringに再度参加しようとするとわかるように、追加は行われます。
print string.join(list_of_string)
-->'a b c d'
string.pyのコードは次のとおりです(sepの組み込みstr.join()のコードが見つかりませんでした):
def join(words, sep = ' '):
"""join(list [,sep]) -> string
Return a string composed of the words in list, with
intervening occurrences of sep. The default separator is a
single space.
(joinfields and join are synonymous)
"""
return sep.join(words)
何が起きてる?これはバグですか?予想される動作の場合、どのように解決しますか/なぜ発生しますか?Pythonがその関数/メソッドを実行する順序について何か面白いことを学ぼうとしている、またはPythonの歴史的な癖にぶつかったような気がします。
補足:もちろん、事前に追加を行うだけで機能します。
list_of_string.append('d')
print string.join(list_of_string)
-->'a b c d'