Python
 Computer >> コンピューター >  >> プログラミング >> Python

なぜタプルはPythonで不変だと思いますか?


次の理由により、タプルは不変です-

  • 順序の維持-タプルは主にPythonで順序を示す方法として定義されています。たとえば、タプルのリストの形式でデータベースからデータを取得する場合、すべてのタプルは、フェッチしたフィールドの順序になります。

  • コピー効率-不変オブジェクトをコピーするのではなく、エイリアスを作成できます(変数を参照にバインドします)

  • 比較効率-参照によるコピーを使用している場合、コンテンツではなく場所を比較することで2つの変数を比較できます

  • インターン-不変の値のコピーを最大で1つ保存する必要があり、並行コードで不変オブジェクトへのアクセスを同期する必要はありません

  • constcorrectness-一部の値は変更を許可されるべきではありません。


  1. Pythonが関数でタプルを定義できないのはなぜですか?

    Python 3.0以降、パックされていないタプルを関数のパラメーターとして定義することはできなくなりました(PEP3113)。これは、関数を次のように定義しようとした場合を意味します- def fn(a,(b,c)):    pass Pythonインタープリターは、タプルの最初のブラケットに構文エラーを表示します。代わりに、タプルオブジェクトをパラメーターとして定義し、関数内で解凍します。次のコードでは、2つのポイントのx座標とy座標を表す2つのタプルオブジェクトが、2つのポイント間の距離を計算するためのパラメーターとして渡されます。計算する前に、タプルオブジェ

  2. Pythonタプル

    Pythonでは、タプルは順序付けられたコレクションです。 および不変 。つまり、タプルにアイテムを追加したり、タプルからアイテムを削除したりすることはできません。 括弧()を使用してタプルを作成します および少なくとも1つのコンマ( , ) 。 タプルは、スライスの結果もタプルになることを除いて、リストと同じようにインデックス付けおよびスライスできます。 タプルを作成する方法 colorsTuple = (red, green, blue) print(colorsTuple) 出力: (red, green, blue) 1つのアイテムのみでタプルを作成する タプルには少なくと