낚시왕강군

파이썬은 산술연산자, 비교(관계)연산자, 할당연산자, 논리연산자, 비트(Bitwise) 연산자, 멤버(Membership) 연산자, 식별 (Identity)연산자가 있다.

     

1. 산술 연산자

산술연산자에는 총 7가지 종류의 연산자가 있다.

  • 사칙연산자 (+, -, *, /)
  • 지수승 연산자(**)
  • 나머지 산출 연산자(%)
  • 몫 연산자(//, 몫만 남기고 소숫점 버림)

# 산술 연산자 Example

>>> 3 + 2      # + 더하기
5
>>> 2 - 5       # - 빼기
-3
>>> 3 * 2       # * 곱하기
6
>>> 6 / 3       # / 나누기
2.0
>>> 7 % 2      # % 나머지
1
>>> 7 // 2      # // 몫
3

 

2. 비교(관계) 연산자

비교(관계)연산자는 객체의 대소를 비교하는 연산을 수행한다.

  • 크다 (>)
  • 작다 (<)
  • 크거나 같다 (>=)
  • 작거나 같다 (<=)
  • 같음 (==)
  • 같지 않음 (!=)

# 비교 연산자 Example

>>> a = 10; b = 15       # a, b 변수 값 할당
>>> a > b                   # a 가 b보다 크다
False
>>> a < b                   # a 가 b보다 작다
True
>>> a >= b                 # a 가 b보다 크거나 같다
False
>>> a <= b                 # a 가 b보다 작거나 같다
True
>>> a == b                 # a 가 b는 같다.
False
>>> a != b                  # a 가 b는 같지 않다.
True

 

3. 할당 연산자

할당연산자는 변수에 값을 할당할때 사용하는 연산자를 말한다. 기본적으로 =을 사용하고 산술연산자와 함께 간결하게 사용되기도 한다.

  • = : 왼쪽 변수에 오른쪽 값을 할당
  • += : 왼쪽 변수에 오른쪽 값을 더하고 결과를 왼쪽 변수에 할당
  • -= : 왼쪽 변수에 오른쪽 값을 빼고 결과를 왼쪽 변수에 할당
  • *= : 왼쪽 변수에 오른쪽 값을 곱하고 결과를 왼쪽 변수에 할당
  • /= : 왼쪽 변수에 오른쪽 값을 나누고 결과를 왼쪽 변수에 할당
  • %= : 왼쪽 변수에 오른쪽 값을 나눈 나머지를 왼쪽 변수에 할당
  • **= : 왼쪽 변수에 오른쪽 값만큼 제곱한 결과를 왼쪽 변수에 할당
  • //= : 왼쪽 변수에 오른쪽 값을 나눈 몫의 결과를 왼쪽 변수에 할당

# 할당 연산자 Example

>>> a = 100; b = 1000         # a=100, b=1000
>>> c = a+b; c                   # c는 a 더하기 b
1100
>>> c += a; c                    # c는 c 더하기 a
1200
>>> c -= a; c                    # c는 c 빼기 a
1100
>>> c *= a; c                    # c는 c 곱하기 a
110000
>>> c /= a; c                    # c는 c 나누기 a
1100.0

>>> a = 5; b=3                 # a=5, b=3
>>> c=a+b;c                    # c는 a더하기 b
8
>>> c %=a; c                   # c는 c나누기 a의 나머지 (8 / 5의 나머지 3)
3
>>> c **=a; c                   # c는 c의 a승 (3^5)
243
>>> c //=a; c                   # c는 c나누기 a의 몫 (243 / 5 의 몫 48)
48

 

4. 논리 연산자

and, or, not이 있다.

  • and : 둘 모두 참인 경우 참
  • or : 둘 중 하나의 값만 참이면 참
  • not : 참이면 거짓, 거짓이면 참 (논리상태를 반전)

# 논리 연산자 Example

>>> a=True; b=False                  # a는 참, b는 거짓
>>> a                                     # a 변수 값
True
>>> b                                    #  b 변수값 
False
>>> a and b                            # 둘 다 참인가? 
False
>>> a or b                             # 둘 중 하나 참인가?
True

>>> not a                               # a 반전 (True > Flase)
False
>>> not b                              # b 반전 (Flase > True)
True

 

5. 비트(Bitwise) 연산자

말 그대로 비트 단위로 연산한다.

  • & : AND, 둘 모두 참일때만 만족
  • | : OR, 둘 중 하나의 값만 참이어도 만족
  • ^ : XOR, 둘 중 하나만 참일때 만족 
  • ~ : NOT, 보수 연산, 참은 거짓, 거짓은 참으로
  • << : 왼쪽시프트, 변수의 값을 왼쪽으로 지정된 비트 수 만큼 시프트(이동)
  • >> : 오른쪽시프트, 변수의 값을 오른쪽으로 지정된 비트 수 만큼 시프트

# 비트 연산자 Example (1이 참, 0은 거짓)

>>> a = 12; b = 8                   # a는 1100, b는 1000
>>> a & b                            # 1100 & 1000 = 1000
8
>>> a | b                              # 1100 | 1000 = 1100
12
>>> a^b                               # 1100 ^ 1000 = 0100
4
>>> ~a                                # ~1100 = -1100
-13
>>> a<<2                             # 0000 1100 <<2 = 0011 0000
48
>>> a>>2                             # 1100 >> 2 = 0011
3

 

6. 멤버(Membership) 연산자

in, not in이 있다.

  • in : 좌측 값이 우측 리스트내에 있으면 참
  • not in : 좌측 값이 우측 리스트 내에 없으면 참

# 멤버 연산자 Example 

>>> list = [1, 3, 5, 7, 9, 10]                    # list에는 1, 3, 5, 7, 9, 10이 들어있음
>>> 2 in list                     # list에 2가 있냐?
False
>>> 1 in list                     # list에 1이 있냐?
True
>>> 2 not in list               # list에 2가 없냐?
True

 

7. 식별(Idnetity) 연산자

동일한 객체인지 두 개체의 메모리 위치를 비교한다. 

  • is : 개체메모리 위치나 값이 같으면 참
  • is not : 개체메모리 위치나 값이 다르면 참
  • id() 함수 : 객체의 입력값을 받아서 객체의 고유값(레퍼런스)를 반환

# 식별 연산자 Example 

>>> a = 5 ; b = 5 ; c = 7                    # a, b, c에 값을 할당
>>> id(a) ; id(b) ; id(c)                     # id()함수로 a, b, c 레퍼런스 확인
140736392533792
140736392533792
140736392533856
>>> a is b                                    # a와 b의 메모리 위치가 동일한가?
True
>>> a is not b                               # a와 b의 메모리 위치가 다른가?
False
>>> a is not c                               # a와 c의 메모리 위치가 다른가?
True

 

여기까지 Python에 존재하는 연산자에 대해서 알아보았다. 종류가 많지만 하나하나 테스트하다 보면 자연스럽게 이해가 될 것이다. 당장에 응용은 힘들겠지만 많이 사용하면 반드시 능숙해진다. 각 연산자의 종류를 인지해놓고 상황에 맞게 사용해 보도록 하자.

다음은 연산 우선순위에 대해 알아보겠다.

8. 연산 우선순위 (Operators Precedence)

연산에는 우선순위가 있고 다양한 연산자가 혼용될 경우 아래의 순서로 계산이 이루어진다.

우선순위

연산자

설명

1

(값...), [값...],
{키: 값...}, {값...}

튜플, 리스트, 딕셔너리, 세트 생성

2

x[인덱스],
x[인덱스:인덱스],
x(인수...), x.속성

리스트(튜플) 첨자, 슬라이싱, 함수 호출, 속성 참조

3

await x

await 표현식

4

**

거듭제곱

5

+x, -x, ~x

단항 덧셈(양의 부호), 단항 뺄셈(음의 부호), 비트 NOT

6

*, @, /, //, %

곱셈, 행렬 곱셈, 나눗셈, 버림 나눗셈, 나머지

7

+, -

덧셈, 뺄셈

8

<<, >>

비트 시프트

9

&

비트 AND

10

^

비트 XOR

11

|

비트 OR

12

in, not in, is, is not,
<, <=, >, >=, !=, ==

포함 연산자, 객체 비교 연산자, 비교 연산자

13

not x

논리 NOT

14

and

논리 AND

15

or

논리 OR

16

if else

조건부 표현식

17

lambda

람다 표현식

 

오늘은 연산자와 연산 우선순위에 대해 알아보았다. 다양한 예문풀이를 통해 실력을 키워보자.

다음은 조건문과 반복문에 대해 알아보자.

 

[python] 파이선 / 파이썬 조건문, 반복문

 

[python] 파이선 / 파이썬 조건문, 반복문

원래 계획은 TTS 사용하는데 필요한 부분까지만 파이썬을 익히면서 글을 쓰려고 했는데, 하다 보니 재미있어서 어느새 6편을 적고 있다. 파이썬의 장점 중 하나인 쉽고 접근성이 높은 언어라는 ��

winding-roads.tistory.com

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading