> For the complete documentation index, see [llms.txt](https://sdc-james.gitbook.io/onebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sdc-james.gitbook.io/onebook/3./3.4./1.1.1..md).

# 4.4.2.     파이썬 연산자

연산자는 피연산자의 값을 조작할 수 있는 구조입니다.&#x20;

표현식 4 + 5 = 9를 생각해 보겠습니다. 여기서 4와 5는 피연산자라고 부르고 +는 연산자라고 합니다.

파이썬은 산술연산자, 비교연산자, 할당연산자, 논리연산자, Bitwise 연산자, 멤버쉽연산자, Identity연산자를 지원합니다.

**1)    산술연산자**

산술연산자에는 사칙연산자 +, -, \*, / 와 제곱을 나타내는 \*\*, 나머지를 산출하는 % (Modulus), 그리고 나누기에 소숫점 이하를 버리는 // 연산자(Floor Division) 등이 있습니다.

| Operator | Example                                                   |
| -------- | --------------------------------------------------------- |
| + 덧하기    | a + b = 30                                                |
| - 빼기     | a – b = -10                                               |
| \* 곱하기   | a \* b = 200                                              |
| / 나누기    | b / a = 2                                                 |
| \*\* 제곱  | a = 3; b = 4; print(a \*\* b)  81                         |
| // 정수 몫  | 9//2 = 4 and 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0 |
| % 나머지    | b % a = 0                                                 |

**2)    비교연산자**

비교연산자는 관계연산자로도 불리우는데, 여기에는 등호(==), 같지 않음(!=), 부등호(<, >, <=, >=) 등이 있습니다.

a 의 값은 10,  b는 20 이라고 한다면

| Operator | Example                                           |
| -------- | ------------------------------------------------- |
| ==       | (a == b) is not true.                             |
| !=       | (a != b) is true.                                 |
| <>       | (a <> b) is true. This is similar to != operator. |
| >        | (a > b) is not true.                              |
| <        | (a < b) is true.                                  |
| >=       | (a >= b) is not true.                             |
| <=       | (a <= b) is true.                                 |

**3)    할당연산자**

할당연산자는 변수에 값을 할당하기 위하여 사용되는데, 기본적으로 = (Equal Sign)을 사용합니다. 산술연산자와 함께 사용되어 할당을 보다 간결하게 하기 위해 사용되는 +=, -=, \*=, /=, %=, //= 등과 같은 연산자도 할당연산자에 해당됩니다.

| Operator           | Example                                                            |
| ------------------ | ------------------------------------------------------------------ |
| =                  | c = a + b assigns value of a + b into c                            |
| += Add AND         | c += a is equivalent to c = c + a                                  |
| -= Subtract AND    | c -= a is equivalent to c = c - a                                  |
| \*= Multiply AND   | c \*= a is equivalent to c = c \* a                                |
| /= Divide AND      | c /= a is equivalent to c = c / ac /= a is equivalent to c = c / a |
| %= Modulus AND     | c %= a is equivalent to c = c % a                                  |
| \*\*= Exponent AND | c \*\*= a is equivalent to c = c \*\* a                            |
| //= Floor Division | c //= a is equivalent to c = c // a                                |

**4)    논리연산자**

논리연산자에는 and, or, not 이 있는데, and 는 양쪽의 값이 모두 참인 경우만 참이 되고, or 는 어느 한쪽만 참이면 참이 됩니다. not 은 참이면 거짓으로 거짓이면 참이 됩니다. 아래 예제는 No가 출력됩니다.

&#x20;a 의 값은 10,  b는 20 이라고 한다면

| Operator        | Example                |
| --------------- | ---------------------- |
| and Logical AND | (a and b) is true.     |
| or Logical OR   | (a or b) is true.      |
| not Logical NOT | Not(a and b) is false. |

**5)    Bitwise 연산자**

Bitwise연산자에는 & (AND), | (OR), ^ (XOR), \~ (Complement), <<, >> (Shift)가 있는데, 이 연산자는 비트단위의 연산을 하는데 사용됩니다.

&#x20;a = 60; b = 13 이라고 가정하면

a = 0011 1100

b = 0000 1101

\-----------------

a\&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

\~a  = 1100 0011

| Operator                  | Example                                                                             |
| ------------------------- | ----------------------------------------------------------------------------------- |
| & Binary AND              | (a & b) (means 0000 1100)                                                           |
| \| Binary OR              | (a \| b) = 61 (means 0011 1101)                                                     |
| ^ Binary XOR              | (a ^ b) = 49 (means 0011 0001)                                                      |
| \~ Binary Ones Complement | (\~a ) = -61 (means 1100 0011 in 2's complement form due to a signed binary number. |
| << Binary Left Shift      | a << 2 = 240 (means 1111 0000)                                                      |
| >> Binary Right Shift     | a >> 2 = 15 (means 0000 1111)                                                       |

**6)    멤버쉽 연산자**

멤버쉽연산자에는 in, not in 이 있는데, 이는 좌측 Operand가 우측 컬렉션에 속해 있는지 아닌지를 체크합니다. 파이썬 멤버쉽 연산자는 문자열, 리스트 또는 튜플과 같은 시퀀스 멤버십을 테스트하는데 사용됩니다.

```
a = [1,2,3,4]
b = 3 in a    # True
print(b)
```

| Operator | Example                                   |
| -------- | ----------------------------------------- |
| in       | x in y,    x가 시퀀스 y의 멤버이면 1이 됩니다.         |
| not in   | x not in y,   x가 시퀀스 y의 멤버가 아닌 경우 1이 됩니다. |

**7)    Identity 연산자**

Identity연산자에는 is, is not 이 있는데, 이는 두 객체의 메모리 위치를 체크합니다.

```
a = "ABC"
b = a
print(a is b)  # True
```

| Operator | Example                                                          |
| -------- | ---------------------------------------------------------------- |
| is       | 연산자의 양쪽에 있는 변수가 동일한 객체를 가리키는 경우 true로 평가하고 그렇지 않으면 false로 평가합니다. |
| is not   | 연산자의 양쪽에 있는 변수가 동일한 객체를 가리키는 경우 false로 평가하고 그렇지 않으면 true로 평가합니다. |

**8)    파이썬 연산자 우선 순위**

가장 높은 우선 순위에서 가장 낮은 모든 연산자를 보여줍니다.

| Operator                    | Description                                           |
| --------------------------- | ----------------------------------------------------- |
| \*\*                        | 지수 (전원으로 인상)                                          |
| \~ + -                      | Ccomplement, 단항 플러스와 마이너스 (마지막 두의 메서드 이름은 + @이며, - @) |
| \* / % //                   | 곱하기, 나누기, 나머지, 몫                                      |
| + -                         | 덧셈과 뺄셈                                                |
| >> <<                       | 좌우 비트 시프트                                             |
| &                           | 비트 'AND'                                              |
| ^ \|                        | 비트 전용 'OR'와 정기적 인 'OR'                                |
| <= < > >=                   | 비교 연산자                                                |
| <> == !=                    | 평등 연산자                                                |
| = %= /= //= -= += \*= \*\*= | 할당 연산자                                                |
| is is not                   | 식별 연산자                                                |
| in not in                   | 맴버 연산자                                                |
| not or and                  | 논리 연산자                                                |
