gpt4 book ai didi

python - Python 以什么顺序解析函数? (为什么 string.join(lst.append ('a' )) 失败了?)

转载 作者:太空宇宙 更新时间:2023-11-04 09:15:26 24 4
gpt4 key购买 nike

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'

最佳答案

list_of_str.append('d')

不返回新的 list_of_str

append 方法没有返回值,因此返回 None

要使其正常工作,您可以这样做:

>>> import string
>>> list_of_str = ['a','b','c']
>>> string.join(list_of_str + ['d'])

虽然这不是很 Pythonic 并且不需要 import string... 这种方式更好:

>>> list_of_str = ['a','b','c']
>>> ''.join(list_of_str + ['d'])

关于python - Python 以什么顺序解析函数? (为什么 string.join(lst.append ('a' )) 失败了?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10039567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com