变量变为类型:Python中无

变量变为类型:Python中无,python,python-3.x,methods,Python,Python 3.x,Methods,我有两组代码用于将列表A=[1,2,3]转换为[1,2,3,4] 这是第一个代码,后面是它打印的内容 A=[1,2,3] A.append(4) print(type(A)) print(A) <class 'list'> [1, 2, 3, 4] A=[1,2,3] A=A.append(4) print(type(A)) print(A) <class 'NoneType'> None 所以现在情况正好相反。所以你只需要知道哪一种方法是正确的 当您放置A=A

我有两组代码用于将列表A=[1,2,3]转换为[1,2,3,4]

这是第一个代码,后面是它打印的内容

A=[1,2,3]
A.append(4)
print(type(A))
print(A)

<class 'list'>
[1, 2, 3, 4]
A=[1,2,3]
A=A.append(4)
print(type(A))
print(A)

<class 'NoneType'>
None

所以现在情况正好相反。所以你只需要知道哪一种方法是正确的

当您放置A=A.append4时,您正在为变量A指定A.append4的返回值,该值为无

append函数是一个就地函数,这意味着当您调用它时,它会修改您的原始列表-它不会返回修改后的列表

更确切地说,当执行行A=A.append4时

调用append4函数,A的值为[1,2,3,4] …然后append4返回的值(无)立即分配给A。 append对列表所做的任何操作都将被丢弃,因为该行最终的计算结果为A=None


这与replace不同,replace返回字符串的新的修改值。要回答您的问题,是的,您只需逐个检查文档,了解每个函数的正确用法。

。追加是一个就地操作。它修改了原始列表,但没有返回任何结果。我认为我并不真正理解就地操作,尽管我以前听过这个术语。就地操作基本上是指那些修改调用方法的原始对象的操作。与此相对应的是.replace for strings等方法,它返回一个修改过的str对象,而不是更改原始的str对象。因此,如果该方法为.replace,则它将是第二种正确的代码样式,而第一种代码样式将不起任何作用?可能是重复的
text='no no no'
text=text.replace('no','yeah')
text

'yeah yeah yeah'

text='no no no'

text.replace('no','yeah')

text

'no no no'