关于我发现的一个问题,我有一个简短的问题。在pythonshell中,我可以编写test1 = "hello".upper()
,当我键入test1
时,我会得到"HELLO"
,正如预期的那样。然而,如果我对一个列表做了类似的操作,比如test2 = ["hello", "world"].reverse()
,并且我试图返回test2,我什么也得不到;它是一个没有赋值的“NoneType”。为什么会这样?为什么我可以用一个作用在字符串上的方法来赋值,而当有一个作用在列表上的方法时我却不能赋值?你知道吗
Tags:
有时可以用一个对象做一件事,而不能用另一个对象做不同的事,原因是不同的对象和不同的方法是不同的。每个方法的文档都说明了它的作用。您需要查看正在使用的单个方法的文档,以了解它的功能。没有理由假设
someString.upper()
将像someList.reverse()
一样工作,因为字符串不是列表,而upper
不是reverse
。你知道吗首先,字符串是不可变的,而列表是可变的。这意味着您可以更改现有列表对象:
但是,不能更改字符串对象;只能使用第一个作为起点来创建新的字符串对象。你知道吗
在Python中,约定是一个方法要么修改一个对象并返回
None
,要么返回一个新的、修改过的对象,而保留原来的对象。你知道吗这是因为^{} 在原地反转。这意味着它返回
None
,因此当您执行test2 = ["hello", "world"].reverse()
时,您将.reverse()
(None
)的结果赋值给test2
。你知道吗相关问题 更多 >
编程相关推荐