我有一个存储提示符的变量,如下所示:(path>in>the>cli)
我想将其更新为(path>in>the>cli>foo)
并附带此内容:
prompt = ">".join(prompt.replace(")","").split(">").append('foo')) + ")"
但我有类型错误,因为prompt.replace(")","").split(">").append('foo')
返回None
为什么它会返回None
而不是['(path', 'in', 'the', 'cli', 'foo']
?
答案 0 :(得分:4)
append()
修改“就地”列表并返回None
:
>>> print(prompt.replace(")","").split(">").append('foo'))
None
您需要通过+
>>> ">".join(prompt.replace(")","").split(">") + ['foo']) + ")"
'(path>in>the>cli>foo)'
答案 1 :(得分:3)
list.append
始终返回None,而不是列表。这是故意的,因为它强调附加变异列表。来自the docs:
您可能已经注意到插入,删除或排序等方法 修改列表没有打印返回值 - 它们返回None。 这是Python中所有可变数据结构的设计原则。
所以,你需要做三行:
items = prompt.replace(")","").split(">")
items.append('foo')
prompt = '>'.join(items)
答案 2 :(得分:1)
最开始的一个最重要的两个词(一种新语言或一种新的!)软件工程师可能会“试一试!”。当你有一个像Python一样可爱的REPLy时,你真的应该尝试一下。
>>> a = []
>>> a.append(1)
>>> a
[1]
您可以使用+
将列表连接到>>> a + [1]
[1, 1]
,如下所示:
append
或者您可以将列表存储在中间变量中,然后使用None
附加到该列表,该{{1}}实际附加到列表中,然后返回{{1}}。