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公式ドキュメントを参照してください。
-
【初心者向け】Pythonの if __name__ == "__main__" の意味と使い方を徹底解説
Pythonインタープリターがソースファイルを読み込むと、そのファイル内に書かれたすべてのコードが実行されます。特殊変数 __name__ の正体コードを実行する前に、Pythonはいくつかの特殊な変数を定義します。その一つが __name__ です。Pythonインタープリターがそのモジュール(ソースファイル)をメインプログラムとして直接実行している場合、__name__ には __main__ という値が設定されます。逆に、そのファイルが別のモジュールからインポートされた場合には、__name__ にはモジュール名が設定されます。なぜこのチェックが必要なのか?この仕組みが役立つ理由は、開発
-
Pythonの「%」演算子とは?文字列フォーマットの基本と使い方を解説
Pythonの「%」演算子の役割 Pythonにおける「%(パーセント)」は、文字列フォーマット演算子(補間演算子)として機能します。「format % values」という形式で記述すると、フォーマット文字列内の変換指定子が、values側の要素によって置き換えられます。この仕組みは、C言語のsprintf()関数とよく似ています。 基本的な使い方:文字列の埋め込み 最もシンプルな例は、文字列の中に変数の値を埋め込むケースです。 >>> lang = Python >>> print %s is awesome! % lang Python is awe