Pythonで可変と不変とは何ですか?
公開: 2022-09-22Python では、すべての変数が任意のオブジェクトのインスタンスを 2 種類 (可変と不変) 保持します。 オブジェクトがインスタンス化されるたびに、固有のオブジェクト ID がオブジェクトに割り当てられます。 ランタイムはオブジェクト タイプを定義し、後で変更することはできません。
ただし、変更可能なものは変更可能なオブジェクトです。 ミュータブルとは、内部オブジェクトの状態を変更できることを意味します。 同時に、作成後に変更できないオブジェクトの状態は、不変オブジェクトです。 可変状態と不変状態の両方が、Python のデータ構造に不可欠です。
Python のオブジェクト可変性の機能により、Python は動的に型付けされた言語になります。 Python の Mutable と Immutable は、概念としては非常に重要ですが、不変の非推移的な性質のためにしばしば混同されます。
それらのすべてと主な違いについて調べてみましょう。
データ サイエンスのオンライン コースをチェックして、スキルアップを図りましょう
スキルアップのために学ぶべきトップ データ サイエンス スキル
SL。 いいえ | 2022 年に学ぶべきトップ データ サイエンス スキル | |
1 | データ分析オンラインコース | 推論統計オンラインコース |
2 | 仮説検定オンラインコース | ロジスティック回帰オンラインコース |
3 | 線形回帰コース | 解析オンラインコースのための線形代数 |
Python の可変状態
「ミュータブル」という言葉は、「変更可能」または「変更」できるものに直接変換されます。 これは、変更に対してオープンなオブジェクトを定義します。Python では、「ミュータブル」は、値を変更するオブジェクトの能力に関連しています。 これらのオブジェクトは、多くの場合、データ コレクションを格納し、組み込みの型リスト、セット、辞書、およびユーザー定義のクラスを含みます。
Python での不変の定義状態
Python で不変とは、時間の経過とともにオブジェクト タイプを変更できない場合です。 Python でオブジェクトの値を変更できない場合、そのオブジェクトは不変オブジェクトと呼ばれます。 不変オブジェクトが作成されると、その値は永続的で変更不可能なままになります。 不変の組み込み型オブジェクトは、数値、文字列、タプル、固定セット、およびユーザー定義クラスです。
Python のオブジェクト
Python の可変性と不変性を深く掘り下げる前に、まずオブジェクトとは何かを学びましょう。 Python では、すべてがオブジェクトと見なされ、各オブジェクトには 3 つの属性があります。
- ID:これは、コンピューターのメモリ内のオブジェクトのアドレスを指します。
- タイプ: これは、作成されるオブジェクトのタイプを指します。 たとえば、整数、文字列、リストなどです。
- 値: これは、オブジェクトが格納する値を指します。 たとえば、List=[5,6,7] は、数値 5、6、および 7 を格納します。
オブジェクトの ID と Type が作成後に変更できない場合でも、Mutable オブジェクトの値は変更できます。
Python の可変オブジェクト
可変オブジェクトは、変更または変更できる Python のオブジェクトです。 コードは、これらのオブジェクトの実装について教えるのに役立ちます。 したがって、いくつかのコードを見て、可変オブジェクトをよりよく理解してみましょう。
- 果物の名前のリスト作成に
果物= ['マンゴー', 'パパイヤ', 'オレンジ']
- コンマとスペースで区切られた果物のリストから要素を印刷する場合
果物の中の果物:
print(果物、終わり='、')
出力 [1]: マンゴー、パパイヤ、オレンジ
- メモリアドレスに作成されたオブジェクトの場所を 16 進形式で印刷する場合
人気のデータ サイエンス オンライン コースを探す
IIITBのデータサイエンスのエグゼクティブポスト大学院プログラム | ビジネス上の意思決定のためのデータ サイエンスのプロフェッショナル認定プログラム | アリゾナ大学でデータ サイエンスの理学修士号を取得 |
IIITB のデータ サイエンスの高度な証明書プログラム | メリーランド大学のデータ サイエンスとビジネス分析のプロフェッショナル認定プログラム | データ サイエンス オンライン コース |
print(hex(id(フルーツ)))
出力 [2]: 0x1691d7de8c8
- リスト「果物」に新しい果物を追加する
fruit.append('ぶどう')
- コンマとスペースで区切られたリスト「果物」に存在する要素を印刷するため
果物の中の果物:
print(果物、終わり='、')
出力 [3]: マンゴー、パパイヤ、オレンジ、ブドウ
- メモリアドレスに作成されたオブジェクトの場所を 16 進形式で印刷する場合
print(hex(id(フルーツ)))
出力 [4]: 0x1691d7de8c8
この例は、オブジェクトの内部状態「果物」が、もう 1 つの果物「ブドウ」を追加することで簡単に変更できることを示しています。 ただし、オブジェクトのメモリ アドレスは同じままであるため、新しいオブジェクトを作成する必要がないことがわかります。 むしろ、同じオブジェクトが変更または変異される可能性があります。 この例は、リスト型である参照変数名「fruits」を持つオブジェクトが変更可能であることを示しています。
Python の不変オブジェクト
Python の不変オブジェクトは、値を変更できないオブジェクトです。 簡単なコードに従って、不変オブジェクトとは何か、どのように機能するかをよりよく理解しましょう。 コードは以下のとおりです。
- 月の英語名を含むタプルを作成する場合
months= '1 月'、'2 月'、'3 月'、'4 月'、'5 月'、'6 月'、'7 月'、'8 月'
- タプル月の要素を出力するため
印刷(月)
出力 [1]: ('1 月'、'2 月'、'3 月'、'4 月'、'5 月'、'6 月'、'7 月'、'8 月')
- メモリアドレスに作成されたオブジェクトの位置を 16 進数形式で印刷する場合
print(hex(id(月)))
出力 [2]: 0x1691cc35090
- タプルは不変であることに注意することが重要です。 したがって、より多くの新しい要素を含めることができません。 したがって、タプルのマージと # + 演算子を使用して、タプル 'months' に新しい架空の月を追加する必要があります。
月 += 'Pythonuary'
- タプル「月」の要素を出力します。
印刷(月)
出力 [3]: ('1 月'、'2 月'、'3 月'、'4 月'、'5 月'、'6 月'、'7 月'、'8 月'、'Pythonuary')
- メモリアドレスに作成されたオブジェクトの場所を 16 進形式で印刷する場合
print(hex(id(月)))
出力 [4]: 0x1691cc8ad68
人気のデータ サイエンス記事を読む
データ サイエンスのキャリア パス: 包括的なキャリア ガイド | データ サイエンスのキャリア成長: 仕事の未来はここにあります | データ サイエンスが重要な理由データ サイエンスがビジネスに価値をもたらす 8 つの方法 |
マネージャーにとってのデータサイエンスの関連性 | すべてのデータ サイエンティストが持つべき究極のデータ サイエンス チート シート | データ サイエンティストになるべき 6 つの理由 |
データ サイエンティストの 1 日: 彼らは何をしているのか? | 神話の崩壊: データ サイエンスにコーディングは必要ない | ビジネス インテリジェンスとデータ サイエンスの違い: 違いは何ですか? |
この例は、8 つの要素で構成される一種のタプルであるオブジェクトを参照するために、変数名を簡単に使用できることを証明しています。 ただし、古いタプルと新しいタプルのメモリ ロケーション ID は同じではありません。 したがって、オブジェクトの内部状態「月」は変更できませんでした。 そのため、Python プログラム マネージャーはメモリ アドレスに新しいオブジェクトを作成しました。 さらに、変数名「months」も、9 つの要素を持つ新しいオブジェクトを参照していました。 したがって、参照変数名「months」を持つオブジェクトであるタプルが不変オブジェクトであることを証明します。
結論
可変オブジェクトは、主に将来の更新を許可するために使用されます。 一方、不変性は、ネットワーク中心の場所でのさまざまな機密タスクに対して多くの効果的かつ実用的なアプリケーションを提供し、並列処理を可能にします。 不変オブジェクト、値を封印し、どのスレッドもデータの上書き/更新を呼び出さないようにします。 将来変更する必要のない恒久的なコードを書くのに最適です。
あなたが新進のプログラマーまたはデータ サイエンスの愛好家である場合、Python の可変オブジェクトと不変オブジェクトについて学ぶことは、この分野をキャリアとして選択するのに役立つことが証明されています。 これらについて学ぶ最善の方法は、 upGradでデータ サイエンスの上級大学院プログラムにサインアップすることです。
このコースは、専門の教職員の指導の下で作成され、トレンドのトピックに関する深い知識を提供して、何千人もの学習者が将来のキャリアに向けて準備できるようにします。
Q1. Pythonでの可変と不変の大きな違いは何ですか?
回答: オブジェクトの状態または値は、可変で作成後に変更できます オブジェクトの状態または値は、不変で作成後に変更できません 可変オブジェクトはスレッドセーフではありません。 不変オブジェクトは完全にスレッドセーフです 可変クラスは final ではありません。 不変オブジェクトを作成する前に、クラスを final にする必要があります。
Q2. Python では、可変および不変のデータ型とは何ですか?
回答: Python の変更可能なデータ型は、リスト、セット、辞書、およびユーザー定義のクラスであり、不変のデータ型は、int、decimal、float、bool、tuple、string、および range です。
Q3. リストはPythonで変更可能ですか?
回答: Python では、リストは簡単に変更できる要素を持つ変更可能なデータ型です。 さらに、個々の要素を置き換えたり、リストの作成後に要素の順序を変更したりすることもできます.