>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
だが:
>>> [1, 2, 3].append(4)
>>>
list
Pythonのメソッド(やなどinsert
)append
が定義された変数でのみ機能するのはなぜですか?
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
だが:
>>> [1, 2, 3].append(4)
>>>
list
Pythonのメソッド(やなどinsert
)append
が定義された変数でのみ機能するのはなぜですか?
append
2番目のサンプルでは、リストで呼び出された(appendが実際に実行されたことに注意してください)がを返すため、何も出力されませんNone
。
a.append(4)
または、(最初のサンプルが示すように)空白行が表示され、最初のコードサンプルの最終出力は、a
式ではなく式の結果の表現であることに言及する必要がありa.append('4')
ます。
append
の表現であるため、どちらの場合も呼び出し後に何も出力されませんNone
。
list.append
を返しますNone
。 a.append('4')
戻るものNone
はインタラクティブインタプリタで何も印刷しないので、何も印刷しませんでした...
2番目のメソッド呼び出しが機能したことに注意してください。それはリストに追加さ'4'
れました。作成したリストにあったハンドルがすぐに失われるため、表示されることはありません。
それは機能します。何も印刷しないのと同じように、何もa.append(4)
印刷しません。新しい値を表示できるのは、リストを変数として保存したからです。
リストメソッドが定義された変数でのみ機能するわけではありません。問題のリストの内部状態を変更している間、リストの指定されたメソッドappendは常にNoneを返します。
リストを連結する別の方法:
>>> [1, 2, 3] + [4]
[1, 2, 3, 4]
この場合、新しいリストが作成されて返されることに注意してください。list.append
既存のリストにアイテムを追加し、何も返しません。
関数は、定義された変数でのみ機能します。これは、関数が機能するようにインデントされる方法であるためです。Pythonドキュメントから:
list.append(x)
リストの最後にアイテムを追加します。と同等
a[len(a):] = [x]
です。
これは、値が返され、関数が例外を発生させないという意味で「機能」することに注意してください。ただし、変更されたリストへの参照がないため、結果は失われます。
!
-を追加するため、この場合、関数はと呼ばれる可能性がありますappend!
。このような命名規則は、関数の意図をより明確にするのに役立ちます。