[Python 103] 연산자의 8가지 종류



?파이썬의 연산자 

파이썬 연산자는 8종류입니다. 아니 사실 거의 모든 언어들이 그렇습니다.  

이 8가지 종류중에 삼항연산자라는 것이 있는데.. 파이썬에서는 조금 애매한 부분이 있습니다. 연산자가 아닌 문법으로 삼항연산자의 역할을 하거든요. 너무 어려워 하시지 마시고 우선 목차를 살펴 보세요. 알고보면 매우 쉽답니다.

  • 산술 연산자(Arithmetic Operators)
  • 할당 연산자(Assignment Operators)
  • 삼항 연산자(Ternary Operator)
  • 비교 연산자(Comparison Operators)
  • 논리 연산자(Logical Operators)
  • 항등 연산자(Identity Operators)
  • 멤버 연산자(Membership Operators)
  • 비트 연산자(Bitwise Operators)



1. 산술 연산자(Arithmetic Operators)

산술연산자는 단순히 계산을 위한 연산자 들입니다.

연산자역할
+더하기
-빼기
*곱하기
/나누기
%나머지
**제곱
//나눈 후 몫이 소수점이면 내림


연습 해볼까요?

print(11 + 2) print(11 - 2) print(11 * 2) print(11 / 2) print(11 % 2) print(11 ** 2) print(11 // 2)



2. 할당 연산자(Assignment Operators)

할당 연산자는 값을 변수에 할당할때 쓰는 연산자 입니다.

연산자역할
=오른쪽 값을 왼쪽 변수에 할당함
+=기존 왼쪽 변수 값과 오른쪽 변수를 더한 후 재할당
-=기존 왼쪽 변수 값과 오른쪽 변수를 뺀 후 재할당
*=기존 왼쪽 변수 값과 오른쪽 변수를 곱한 후 재할당
/=기존 왼쪽 변수 값과 오른쪽 변수를 나눈 후 재할당
%=기존 왼쪽 변수 값과 오른쪽 변수로 나눈 나머지를 재할당
//=기존 왼쪽 변수 값과 오른쪽 변수로 나눈 후 내림한 값을 재할당
**=기존 왼쪽 변수 값에 오른쪽 변수만큼 제곱을 한 후 재할당
  • 비트연산자와도 함께 쓸수 있습니다. 밑에 따로 비트연산자를 설명하겠습니다~


아래 코드를 예시로 위 연산자를 연습해 보세요. 이 코드에디터에서 바로 수정하고 확인해볼 수 있습니다.

a = 90 print(a) a += 10 print(a) a /= 10 print(a)



3. 삼항 연산자(Ternary Operator)

앞 서 말씀드린 삼항 연산자로 왔습니다. 사실 솔직하게 말씀드리면, 파이썬에게 삼항연산자는 없습니다. 대신 삼항 연산자보다 더욱 가독성 좋은 문법이 있습니다. 우선 아래는 자바스크립트의 삼항연산자 입니다. 

let num = 9;
(num % 2 === 0) ? console.log("짝수입니다.") : console.log("홀수입니다.");

만약 num을 2로 나눈 나머지가 0이면, '짝수입니다' 경고를, 아니면 '홀수입니다' 를 출력해주는 문법입니다. 

그리고 아래는 같은 역할을 하는 파이썬 문법 입니다. 

num = 9
val = "짝수입니다." if num % 2 == 0 else "홀수입니다."
print(val) >>> 홀수입니다.

비슷 하지만 '연산자' 가 아닌 문법 입니다.



4. 비교 연산자(Comparison Operators)

연산자를 사이에 두고 좌우 변수를 비교하는 연산자 입니다. 이 연산자들의 반환값은 참, 거짓 입니다.

연산자역할
==같다면.
!=같지 않다면
>왼쪽 값이 더 크다면
<오른쪽 값이 더 크다면
>=왼쪽 같이 크거나 같다면
<=오른쪽 값이 크거나 같다면
a = 10 b = 9 if a > b: print('a가 큽니다.') else: print('b가 큽니다.')



5. 논리 연산자(Logical Operators)

논리 연산자는 if... else 구문처럼 조건문을 결합할때 사용합니다. 

연산자역할
and and를 두고 좌우 조건문이 모두 참이면
oror을 두고 좌우 조건문중 하나라도 참이면
not조건문 자체가 거짓이라면
a = 3
b = 5
c = 10
d = 9

print(a < b and c > d)
print(a < b or c < d)
print(not c < d) >>> True >>> True >>> True



6. 항등 연산자(Identity Operators)

항등 연산자는, 같은 메모리에 있는지를 확인 하는 겁니다. 2가지 밖에 존재 하지 않습니다. 잘 한번 코드를 봐주세요. 값이 같은 것을 넘어 객체 존재 자체가 같아야 합니다.

a = [1, 3, 4, 5]
b = [1, 3, 4, 5]

print(a == b)
print(a is b)
print(a is not b) >>> True >>> False >>> True
  • a와 b는 같은 값의 리스트를 할당 받았습니다.
  • == 연산자는 값이 같기에 True를  반환 하였습니다,
  • 반면 is 는 false를 리턴 하였습니다.
  • 같은 메모리 주소가 아니기 때문입니다. is not 은 반대이기때문에 true를 리턴하였습니다.



7. 멤버 연산자(Membership Operators)

멤버 연산자는 왼쪽 값이 오른쪽 컨테이너 객체의 멤버인지를 확인하는 연산자 입니다. 이 또한 2개 밖에 없습니다. 함께 확인해 보실까요?

a = 10 b = [1, 10, 3, 4, 65, 8] c = 9 if a in b: print('a가 b 리스트 안에 있습니다.') if not c in b: print('c가 b 리스트 안에 없습니다.')



8. 비트 연산자(Bitwise Operators)

비트단위로 연산을 하는 비트연산자 입니다. 아직은 어려울 수 있으니 '이런게 있구나..' 하시면 됩니다.

요즘은 잘 사용하진 않지만, 예전에는 메모리가 비싸서 최대한 메모리를 아끼고 아끼는 비트연산을 했습니다. 지금도 임베디드 프로그래머들은 할 수 도 있겠군요. 예를들어 True, False 를 나타내는 bool 타입 자료형은 8비트를 차지 합니다. 하지만 이중 8개의 비트중 사용하지 않는 것이 대부분이지요. 이런 것을 비트연산자를 사용하면 메모리를 절약 할 수 있습니다.

파이썬은 C++과 마찬가지로 6개의 비트연산자가 있습니다. 아참, 그리고 아래 코드출처는 위키독스 입니다.

연산자역할
&and의 연산을 비트단위로 합니다.
|or의 연산을  비트단위로 합니다.
^xor의 연산을 비트단위로 합니다.
~not의 연산을 비트단위로 합니다.
<<비트단위로 "왼쪽으로 비트단위 밀기" 연산을 합니다.
>>비트단위로 "오른쪽으로 비트단위 밀기" 연산을 합니다.
a = 0b10101010 b = 0b01110011 print('a = ', a, ":", bin(a)) print('b = ', b, ":", bin(b)) print('a & b = ', a & b, ":", bin(a & b)) print('a | b = ', a | b, ":", bin(a | b)) print('a ^ b = ', a ^ b, ":", bin(a ^ b)) print('~a = ', ~a, ":", bin(~a)) a = 0b1 print('a = ', a) a = a << 1 # * 2 print('a = ', a) a = a << 1 # * 2 print('a = ', a) a = a << 3 # * 2**3 print('a = ', a) a = a >> 1 # / 2 print('a = ', a) a = a >> 1 # / 2 print('a = ', a) a = a >> 2 # / 2**2 print('a = ', a)


  • [[a.original_name]] ([[a.file_size | fileSizer]])
좋아요[[ postLike | likePlus ]]
공유
라이언

“Lead Python Engineer”

댓글 [[totalCommentCount]]
[[ comment.author__nick_name ]] [[ comment.datetime_updated | formatDate]] (수정됨)

[블라인드 처리된 글 입니다.]

답장
[[ sub.author__nick_name ]] [[ sub.datetime_created | formatDate ]] (수정됨)

취소
댓글을 남겨주세요.
'파이썬' 관련 최신 포스트
[[ post.title ]]
[[ post.datetime_published_from | DateOnly ]]