본문 바로가기
Python

파이썬 연산자

by GGoris 2014. 12. 29.
반응형

이 글은 '열혈강의 Python 개정판ver.2'를 참고로 작성하였습니다.


'열혈강의 Python 개정판ver.2' 이강성저  프리렉





RaspberryPI에 Raspbian을 사용하였습니다.





파이썬 연산자


산술 연산자


파이썬에서 기본 산술 연산자는 다음과 같습니다.


+ 더하기, - 빼기, * 곱하기, / 나누기, // 몫, ** 지수승, % 나머지


정수와 정수의 연산 결과는 정수가 되며

정수와 실수의 연산 결과는 실수가 됩니다.


아래는 연산자의 우선순위입니다.

1   +, - 단항연산자 오른->왼
2   ** 지수 오른->왼
3   *, /, %, // 곱셈,나눗셈,나머지,몫 왼->오른
4   +, - 덧셈, 뺄셈 왼->오른



2 + 3 * -4 라는 수식이 있다고한다면

단항 연산자인 - 가 먼저 적용되고 그다음 *곱셈, +덧셈 순서로 연산이 이루어 집니다.

->   (2 + (3 * (-4)))

따라서 연산의 결과는 -10이 됩니다.


연산자의 결합 순서를 변경하려면 괄호를 이용합니다.

(2 + 3) * -4

연산의 결과는 -20 이 됩니다.


>>> 2 + 3 * -4

-10

>>> (2 + 3) * -4

-20





관계 연산자


관계 연산자는 같냐 다르냐, 크냐 작냐 와 같은 객체의 대소를 비교하는 연산을 말합니다.


> 크다, < 작다, >= 크거나 같다, <=작거나 같다, == 같다, != 다르다


a < b

 와 같이 사용할 수 있으며,


다른 언어에서는 다음과 같이 풀어써야하는식을

0 < a and a < b


아래처럼

0 < a < b

복합적인 관계도 가능합니다.



또한 수치뿐 아니라 다른 여러 객체들의 비교도 가능합니다.

>>> 'asdfvbcxzb' < 'vcbixcoging'

True

>>> (1,4,6) > (5,7,3)

False

>>> [2,6,4] != [2,6,3]

True

>>> [2,6,4] != [2,6,4]

False

>>> (1,4,6) < (1,4,7)

True


자료형 간의 크기 비교도 가능합니다.


숫자 < 사전 < 리스트 < 문자열 < 튜플

>>> a=1

>>> b={'key':'value'}

>>> c=[1]

>>> d='string'

>>> e=(1,2)

>>> a < b < c < d < e

True


아래는 같은 객체인치를 비교하는 예입니다.

>>> X=[1,2,3]

>>> Y=[1,2,3]

>>> Z=Y

>>> X==Y

True

>>> X==Z

True

>>> X is Z

False

>>> Z is Y

True





논리 연산자


논리 연산자는 진리 값을 피연산자로 취해 논리 값을 계산하는 연산자 입니다.

논리 연산자로는 not, and, or 가 있습니다.

not x      x가 true면 false, x가 false면 true

x and y     x가 true면 y, x가 false면 x           

x or y      x가 true면 x,, x가 false면 y         


연산의 결과가
참이면 True를 반환
거짓이면 False를 반환합니다.

내부적으로는 

True는 1

False는 0

의 값을 갖습니다.



피연산자가 

정수 0일때

실수 0.0일때

빈객체 일때

거짓 값이며

그외의 나머지 값들은 참 값으로 간주됩니다.


False

>>> bool(0)

False

>>> bool(0.0)

False

>>> bool('')

False

>>> bool([])

False

>>> bool(())

False

>>> bool({})

False

>>> bool(None)

False

파이썬에서 None객체가 있는데 
이것은 다른 언어에서 null, nill과 유사하게
'없다', '아니다'와 같은 의미를 지닙니다.
이 None은 언제나 False값을 갖습니다.


논리식의 계산은 식의 결과 판정을 하는데 기여한 객체의 값을 결과로 반환합니다.

즉 항상 True False의 결과만을 가져오는게 아니라는 이야기 입니다.

>>> 1 and 1

1

>>> [] or 1

1

>>> [] and 1

[]

>>> [{}] and 1

1

>>> [{}] or 1

[{}]

>>> [1,2,3,4] or (1,2,3,4)

[1, 2, 3, 4]

>>> [1,2,3,4] and (1,2,3,4)

(1, 2, 3, 4)




비트 연산자


비트 연산자는  정수 자료형에만 적용되며 비트 단위의 데이터를 조작합니다.

1    ~ 비트 반전
2    <<, >>  왼쪽 Shift, 오른쪽 Shift
3    & 비트 AND
4    ^ 비트 XOR
5    | 비트 OR




정수 표현 범위를 넘어가면 자동 형 변환이 이루어지고

Shift시 오른쪽은 0으로 채워지고,

된쪽은 최상위 비트로 채워집니다.

>>> ~-1 #1111...1111

0

>>> a=4 #0000...0100

>>> a<<1

8  #0000...1000  가장 오른쪽 비트는 0으로 채워짐

>>> 1 << 128 #정수형 표기범위를 넘어갈경우 자동 형변환

340282366920938463463374607431768211456L

>>> a=-4  #1111...1100

>>> a>>1

-2  #1111...1110  가장 왼쪽 비트는 최상위비트로 채워짐

>>> a=4  # 0000...0100

>>> a>>1

2  #0000...0010 가장 왼쪽 비트는 최상위비트로 채워짐







내장 함수 및 math 모듈 함수


위와 같은 연산자들 이외에 파이썬에서 제공되는 내장 함수들이 있습니다.

abs(x) x의 절대값
int(x) int 형변환
long(x) long 형변환
float(x) flaot 형변환
compolex(re,im) 복소수 생성
c.conjugate() 복소수c의 켤레복소수
divmod(x,y) (x//y,x%y)
pow(x,y) x의 y승



실수 연산을 위한 math 모듈이 있고

복소수 연산을 위한 cmath 모듈이 있습니다.


>>> import math

>>> math.pi

3.141592653589793

>>> math.e

2.718281828459045

>>> math.sin(1)

0.8414709848078965

>>> math.sqrt(4)

2.0













반응형

'Python' 카테고리의 다른 글

정규식  (0) 2015.02.03
파이썬 한글 유니코드 변환 에러  (0) 2014.12.30
파이썬 수치자료형  (0) 2014.12.25
파이썬 제어문  (0) 2014.12.23
파이썬 메모리 관리  (0) 2014.12.23

댓글