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

Pythonの&=演算子とは?ビット演算とインプレース代入の仕組みを解説

&=演算子の正体:object.__iand__()メソッド

Pythonにおける &= 演算子は、object.__iand__() メソッドに対するシンタックスシュガー(糖衣構文)です。公式ドキュメントには以下のように記載されています。

「これらのメソッドは、拡張代入演算子(+=、-=、*=、@=、/=、//=、%=、**=、<<=、>>=、&=、^=、|=)を実装するために呼び出されます。これらのメソッドは、可能な限りインプレース(self自身を直接変更する形)で操作を行い、その結果を返すことが求められます(返り値はselfである必要はありません)。」

使用例

実際に、次のようなコードを実行した場合の動作を見てみましょう。

a = 6   # 2進数では 110
b = 5   # 2進数では 101
a &= b  # a は 110 と 101 の論理積(AND)である 100、つまり 4 になる
print(a)

出力結果

4

この例では、変数 a が新しいオブジェクトを作成することなく、インプレース(元の場所で直接)変更されている点がポイントです。& はビットごとの論理積(AND)を計算する演算子であり、対応する各ビットが両方とも1の場合のみ1を返します。

このような特殊メソッドや拡張代入演算子の詳細については、Python公式ドキュメントを参照してください。

  1. 【初心者向け】Pythonの if __name__ == "__main__" の意味と使い方を徹底解説

    Pythonインタープリターがソースファイルを読み込むと、そのファイル内に書かれたすべてのコードが実行されます。特殊変数 __name__ の正体コードを実行する前に、Pythonはいくつかの特殊な変数を定義します。その一つが __name__ です。Pythonインタープリターがそのモジュール(ソースファイル)をメインプログラムとして直接実行している場合、__name__ には __main__ という値が設定されます。逆に、そのファイルが別のモジュールからインポートされた場合には、__name__ にはモジュール名が設定されます。なぜこのチェックが必要なのか?この仕組みが役立つ理由は、開発

  2. Pythonの「%」演算子とは?文字列フォーマットの基本と使い方を解説

    Pythonの「%」演算子の役割 Pythonにおける「%(パーセント)」は、文字列フォーマット演算子(補間演算子)として機能します。「format % values」という形式で記述すると、フォーマット文字列内の変換指定子が、values側の要素によって置き換えられます。この仕組みは、C言語のsprintf()関数とよく似ています。 基本的な使い方:文字列の埋め込み 最もシンプルな例は、文字列の中に変数の値を埋め込むケースです。 >>> lang = Python >>> print %s is awesome! % lang Python is awe