개발자/파이썬 Python

파이선 연산 리얼파이선 6

지구빵집 2022. 1. 26. 15:02
반응형

 

 

 

Python에서 제공하는 연산자들을 간략하게 살펴보겠습니다. Python에서 제공하는 연산자 종류에는 산술, 비교, 대입, 논리, 비트, 멤버십, 참조 비교 연산자가 있어요. 여기에서는 간략하게 연산 기호와 예제를 보여줍니다.

 

파이선 연산 리얼파이선 6 

 

산술 연산자 (+, -, *, /, %, **, //) +, -, *, /는 사칙 연산에 사용합니다. % 는 나머지를 구할 때 사용하여 나머지 연산자라고 부릅니다. **는 지수 연산을 수행합니다. //는 Floor Division으로 소수점 이하 자릿수를 제거한 몫을 구하는 연산입니다. 예제 코드와 결과를 살펴보세요. 

 

산술 연산자

연산자 설명
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
// 나눗셈의 몫
% 모듈로 (나눗셈의 나머지)
** 지수 연산자
+var 단항 덧셈
-var 단항 뺄셈

 

수학 내장 함수도 알아두세요.

 

기능 설명
abs(var) 절대값
pow(x, y) ** 연산자 대신에 사용 가능
pow(x,y,modulo) 삼항 지수-나머지 (x ** y) % modulo
round(var[, n]) 10-n 또는 (10**-n)의 반올림한 근사치를 반환. n의 기본값은 0
divmod(x, y) 나눗셈의 몫과 나머지로 이루어진 튜플을 반환

 

 

#산술 연산자
a=12.34
b=2.1
 
print("a:{0}, b:{1}".format(a,b))
print("a+b=",a+b)
print("a-b=",a-b)
print("a*b=",a*b)
print("a/b= {0:.3f}".format(a/b))
 
print("{0}/{1}의 나머지:{2}".format(14,2,14%2))
print("{0}의 {1}승={2}".format(3,7,3**7))
 
print("===Floor Division===")
print("{0}//{1}=>{2}".format(10,3,10//3))
print("{0}//{1}=>{2}".format(10.8123,3.1,10.8123//3.1))

 

비교 연산자(==, !=, >, <, >=, <=) 비교 연산자는 같음(==), 다름(!=), 크다(>), 작다(<), 크거나 같다(>=), 작거나 같다(<=)가 있습니다. ==, !=, >=, <=는 하나의 연산자이므로 사이에 공백이 올 수 없어요. 

 

연산자 설명
>
< 작음
>= 크거나 같음
<= 작거나 같음
!= 같지 않음
== 같음

 

#비교 연산자
a=10
b=7
c=10
print("{0}=={1}=>".format(a,b),a==b)
print("{0}=={1}=>".format(a,c),a==c)
print("{0}!={1}=>".format(a,b),a!=b)
print("{0}!={1}=>".format(a,c),a!=c)
print("{0}>{1}=>".format(a,b),a>b)
print("{0}>{1}=>".format(a,c),a>c)
print("{0}>={1}=>".format(a,b),a>=b)
print("{0}>={1}=>".format(a,c),a>=c)
print("{0}<{1}=>".format(a,b),a<b)
print("{0}<{1}=>".format(a,c),a<c)
print("{0}<={1}=>".format(a,b),a<=b)
print("{0}<={1}=>".format(a,c),a<=c)

 

대입 연산자(=, +=, -=, *=, /=, %=, **= //=) 대입 연산자는 좌항 표현으로 관리하는 메모리를 우항의 값으로 배정하는 연산자입니다. a+=b 는 a= a+b와 같은 표현이며 a-=b는 a=a-b와 같은 표현입니다. 이 외에도 같은 원리입니다. 

 

연산자 동치
a += b a = a + b
a -= b a = a - b
a *= b a = a * b
a /= b a = a / b
a %= b a = a % b
a //= b a = a // b
a **= b a = a** b
a &= b a = a & b
a |= b a = a | b
a ^= b a = a ^ b
a >>= b a = a >> b
a <<= b a = a << b

 

#대입연산자
 
a=2
print("a:",a)
 
a+=3
print("a+=3 , a:",a)
 
a-=1
print("a-=1 , a:",a)
 
a*=3
print("a*=3 , a:",a)
 
a/=2
print("a/=2 , a:",a)
 
a%=4
print("a%=4 , a:",a)
 
a**=3
print("a**=3 , a:",a)
 
a//=2
print("a//=2 , a:",a)

 

비트 연산자 (&, |, ^, ~, <<, >>)

 

연산자 설명
& 논리곱 연산자로서 비트가 두 항에 모두 나타나는 경우 비트를 결과에 복사함
|| 논리합 연산자로서 비트가 두 항 중 어느 곳에 나타나는 경우 비트를 결과에 복사함
^ 배타적 논리합 연산자로서 어느 한 쪽의 항에만 비트가 존재할 경우 비트를 결과에 복사함
~ 부정 연산자로서 비트를 뒤집어서 각 비트에 대하여 정확히 반대를 반환함

 

비트 연산자는 비트 단위로 연산을 수행하며 비트 논리곱(&), 비트 논리합(|), 비트 상호배제(^), 비트 부정(~), 왼쪽 쉬프트(<<), 오른쪽 쉬프트(>>)가 있습니다. 비트 논리곱은 같은 자리가 모두 1일 때 해당 자리의 연산 결과가 1이며 그렇지 않을 때 0입니다. 예를 들어 a가 6이고 b가 3일 때 a&b는 2입니다. (110 & 011 => 010) 비트 논리합은 같은 자리에 하나라도 1이면 해당 자리의 연산 결과가 1이며 둘 다 0일 때만 0입니다. 예를 들어 a가 6이고 b가 3일 때 a|b는 7입니다.(110 | 011 => 111) 비트 상호 배제는 같은 자리의 값이 서로 다르면 해당 자리의 연산 결과가 1이며 같을 때 0입니다. 예를 들어 a가 6이고 b가 3일 때 a^b는 5입니다.(110^011 => 101) 비트 부정은 0인 자리는 1로 1인 자리는 0으로 변환합니다.

 

x<<n 왼쪽으로 이동 (숫자 x에 2를 n번 곱한 것과 동등함)
x>>n 오른쪽으로 이동 (숫자 x를 2로 n번 나눈 것과 동등함)

 

왼쪽 쉬프트는 지정한 비트 수만큼 왼쪽으로 자리 이동하며 1자리 이동하면 2를 곱한 결과와 같습니다. 오른쪽 쉬프트는 지정한 비트 수만큼 오른쪽으로 자리 이동하며 1자리 이동하면 2로 나눈 결과와 같습니다. 

 

#비트 연산자
a=6
b=3
print("{0}&{1} => {2}".format(a,b,a&b))
print("{0}|{1} => {2}".format(a,b,a|b))
print("{0}^{1} => {2}".format(a,b,a^b))
print("~{0} => {1}".format(a,~a))
print("{0}<<{1} ==> {2}".format(a,3,a<<3))
print("{0}>>{1} ==> {2}".format(a,1,a>>1))

 

논리 연산자(and, or, not) 논리 연산자는 둘 다 참일 때 연산 결과가 참인 and, 하나라도 참일 때 연산 결과가 참인 or, 참이면 결과가 거짓이고 거짓일 때 결과가 참인 not이 있습니다. 

 

조건부 논리
and x and y 평가에 있어서, x가 거짓으로 판명되면 그것을 반환하고, 그렇지 않은 경우에는 y를 평가하여 결과값을 반환
or x or y 평가에 있어서, x가 참으로 판명되면 그것을 반환하고, 그렇지 않은 경우에는 y를 평가하여 결과값을 반환
not not x 평가에 있어서, x가 거짓이라는 것은 x의 반대를 의미함

 

#논리 연산자
print("True and True:",True and True)
print("True and False:",True and False)
print("False and True:",False and True)
print("False and False:",False and False)
 
print("True or True:",True or True)
print("True or False:",True or False)
print("False or True:",False or True)
print("False or False:",False or False)
 
print("not True :", not True)
print("not False :", not False)

멤버쉽 연산자(in, not in) Python에는 여러 개의 자료를 보관하는 컬렉션을 제공하고 있습니다. 그리고 멤버십 연산자는 특정 자료가 해당 컬렉션에 속하는지(in) 혹은 속하지 않는지(not in) 판별하는 연산자입니다. 컬렉션에 관한 사항은 별도로 다룰 거예요. 

#멤버쉽 연산자
 
fruits =["사과","배","복숭아"]
print("사과"in fruits)
print("딸기"in fruits)
print("사과"not in fruits)
print("딸기"not in fruits)

 

참조 비교 연산자(is, is not) Python에서 참조 비교 연산자에는 같다(is)와 같지 않다(is not)이 있습니다. 비교 연산자의 같다(==)와 같지 않다(!=)는 값이 같은지 판별하는 연산자입니다. 반면 참조 비교 연산자는 같은 메모리를 참조하는지 판별하는 연산자입니다. 정수나 실수 등의 값을 기억하는 형식에서는 비교 연산자와 참조 비교 연산자는 차이가 없습니다. 하지만 클래스처럼 참조 형식에서는 서로 다른 개체가 같은 값을 갖고 있을 때 차이가 발생합니다. 

 

 

#참조 비교 연산자
a=10 #값 형식
b=10
c=20
print("a:{0}, b:{1}, c:{2}".format(a,b,c))
 
print("a == b :",a == b)
print("a is b :",a is b)
 
print("a == c :",a == c)
print("a is c :",a is c)
 
d=3+2j #참조 형식
e=3+2j
f=4+2j
print("d == e :",d == e)
print("d is e :",d is e)
 
print("d == f :",d == f)
print("d is f :",d is f)

 

결과 화면입니다.

 

a:10 b:10 c:20
a == b : True
a is b : True
a == 0 : False
a is 0 : False
d == e : True
d is e : False
d == f : False
d is f : False
Press any key...

 

참조 비교 연산자 실행 결과가 잘 나왔나요? 만약 print(“d is e :”,d is e) 결과가 True로 나온다면 여러분이 가지고 있는 Python에서 복소수는 값 형식으로 표현하고 있을 거예요. 이 때는 다음과 같은 코드로 확인하면 참조 형식에서의 is 연산의 의미를 알 수 있을 거예요. 

 

다른 프로그래밍 언어들과 마찬가지로, 어느 연산자를 먼저 평가할 것인지에 대해서 정해진 순서가 있습니다. 예를 들어, a + b * c라는 식이 있다고 하면, 어느 연산을 가장 먼저 처리하여야 하는지의 순서가 있는거죠. 파이썬의 연산 순서는 아래 표에 있으며, 높은 순위일수록 위쪽에, 낮은 순위일수록 아래쪽에 나타내었다. 동일한 연산자가 연달아 있을 경우 왼쪽으로부터 오른쪽으로 실행되지만, ( )나 제곱(**) 연산자가 가장 먼저 처리됩니다.  

 

파이썬의 연산 순서

가장 높은 것부터 가장 낮은 것까지의 연산자의 우선순위 이름
+var, -var, ~var 단항 연산자
** 제곱 연산자
*, /, //, % 곱셈, 나눗셈, 몫, 나머지
+, - 덧셈, 뺄셈
<<, >> 왼쪽 및 오른쪽 이동
& 논리곱
^ 배타적 논리합
|| 논리합
<, >, <=. >= , <> 비교 연산자
==, != , is, is not, in, not in 동등 및 포함
and, or, not 여부 판단 조건

 

 

파이선 연산

 

 

 

반응형