結論
- 破壊的メソッド:オブジェクトの値を変更し、Noneを返すメソッド
- 非破壊的メソッド:オブジェクトの値を変更せず、処理を加えた新たなオブジェクトを返すメソッド
実践確認
破壊的
lst = [1,2,3,4,5]
lst.append(99)
# lst => [1, 2, 3, 4, 5, 99]
変数lstの値が変更されるため、append()は破壊的メソッドと言える。
また、
lst = [1,2,3,4,5]
lst2 = lst.append(99)
# lst => [1, 2, 3, 4, 5, 99]
# lst2 => None
変数lst2に値が存在しないことから、破壊的メソッドはNoneを返却する。
非破壊的
msg1 = 'こんにちは、世界'
msg2 = msg1.replace('こんにちは', 'さようなら')
# msg1 => 'こんにちは、世界'
# msg2 => 'さようなら、世界'
変数msg1の値が変更されていないため、replace()は非破壊的メソッドと言える。
また、変数msg2には、新たに生成されたオブジェクトが格納される。