본문 바로가기
PL (Programming Language)/Python

[Python] 파이썬 연산자와 자동 형변환(캐스팅, Casting)

by jangThang 2022. 1. 24.
반응형

2022.01.23 - [PL (Programming Language)/Python] - [Python] 변수(Variable)와 자료형(Data type)

 

[Python] 변수(Variable)와 자료형(Data type)

2022.01.23 - [PL (Programming Language)/Python] - [Python] print() 함수로 알아보는 프로그래밍 함수의 정의  저번 시간에 print를 통해 프로그래밍 함수에 대해 알아봤습니다. 이 시간에는 변수와 자료형에..

star7sss.tistory.com

 파이썬은 직접 자료형을 지정하지 않아도, 데이터에 따라 자동으로 자료형을 설정해줍니다. 이는 연산에서도 마찬가지입니다. 연산 결과에 따라 알맞은 자료형을 자동으로 설정해줍니다. 이를 자동 형변환이라고 합니다.

 이에 대해서 자세히 알아볼게요.

 

[ Contents ]

     

     

     

    1. 파이썬 연산자

     

     1) 산술연산자

     + (덧셈) 1 + 2 = 3
     - (뺄셈) 1 - 2 = -1
    * (곱셈) 1 * 2 = 2
    / (나눗셈) 1 / 2 = 0.5
    % (나머지 연산) 1 % 2 = 1
    // (몫 연산) 1 // 2 = 0
    ** (거듭제곱) 2 ** 3 = 8

     사칙연산 기호는 실생활에서도 많이 볼 수 있는 기호입니다. 특이한 연산자는 %, //, **입니다.

     나눗셈에서 %는 나머지를 반환하고, //는 몫을 반환합니다. 몫과 나머지는 모두 정수입니다.

     **는 거듭제곱을 구하는 연산자입니다. 2 ** 3은 2의 3제곱이라는 뜻으로, 파이썬에서는 기본 연산자로 제공합니다. 굳이 Math.pow()와 같은 함수를 쓰지 않아도 됩니다.

     

     

    ※ 주의: 파이썬에는 ++, -- 와 같은 연산자가 없습니다.

     C/C++를 배우신 분들이라면, 포인터와 관련해서 ++, --로 골머리를 많이 앓으셨을 거라 예상합니다. 단순히 ±1을 해주는 연산자인데, 변수 앞에 붙는지 뒤에 붙는지에 따라 결과가 달랐었죠.

     파이썬은 이렇게 혼동을 주는 연산자가 아예 없습니다. a++ 대신 a += 1로 씁니다.

     

     

     

     2) 비교/논리 연산자

    == 같으면 True 아니면 False
    != 같지 않으면 True 아니면 False
    and ( & ) And 연산
    or ( | ) OR 연산
    ^ XOR 연산
    ~ NOT 연산

     비교/논리 연산자는 비트 연산이나 제어문(조건문, 반복문)에 사용됩니다. 어려우시면, 제어문을 배울 때 함께 공부하셔도 좋습니다.

     

     and 연산은 모두 True일 때만 True이고, or연산은 모두 False일 때만 False입니다.

     XOR 연산은 같으면 False, 다르면 True입니다.

     NOT 연산은 논리값을 반대로 만듭니다. not True는 False죠.

     

     

     

    2. 자동 형변환(Casting)

     자료형을 바꾸는 걸 '형변환'이라고 합니다. 파이썬에서는 데이터 유형에 따라 자동으로 자료형을 변환해줍니다.

     위와 같이 num1, num2는 1과 2로 정수형(int)이었지만, 나누면 0.5로 소수가 됩니다. 따라서 num3은 실수형인 float으로 변환되었습니다. 반면 C/C++, Java에서는 이런 자동 형변환이 되지 않기 때문에, 나눈 값이 0으로 나옵니다. (정수형을 유지하기 위해서 내림)

     파이썬은 이런 개발자의 실수를 방지해주는 '자동 형변환'을 지원합니다. 

     

     

     

     하지만, 파이썬은 오로지 데이터의 형태만 보고 자료형을 결정합니다. 정수형 0(int)과 논리형 0(False)이나, 정수형 1(int)과 문자형 '1'(Str) 과 같이 형태가 같으면 구분하지 못합니다.

      따라서 이런 경우에는 개발자가 지정해줘야 합니다.

     

     

     

    자료형 ( 변수 )

     위와 같이 자료형으로 감싸서 변환합니다. 해당 자료형으로 바꿔주는 캐스팅 함수이며, 변수나 데이터를 인수(Arguments)로 받습니다. (int)num이 아니므로, 주의하시기 바랍니다.

     

     

     

    3. 백견이 불여일행

     이번 실습은 '논리연산자'입니다. 주로 조건문에서 if (i >= 0 and i < N) 등 복잡한 논리식을 구성할 때 사용합니다. 기본적으로 and와 or의 논리연산을 알고 있어야 올바른 조건식을 만들 수 있습니다.

     논리 또는 부울(Boolean) 연산에서 나올 수 있는 결과는 오로지 2가지입니다. True와 False. 컴퓨터는 수많은 스위치로 구성된 논리회로를 사용하며, 2진법으로 True는 1이고, False는 0입니다.

     

     

     True와 False로 외우기보다는 1과 0으로 논리연산을 이해하면 쉽게 공부할 수 있습니다. And연산은 곱셈(*)과 결과가 같습니다. 뭐든 0을 곱하면 0이 나오기 마련이죠.

     

     

     OR연산은 덧셈(+)과 비슷합니다. 0 + 0만 0입니다.

     

     

     그다음은 낯설 수 있는 XOR연산입니다. and연산 결과에 not을 붙이면 XOR 연산결과가 나옵니다.

     어떻게 보면, XOR연산이 정말 덧셈에 가까운 연산입니다. 2진법에서 1+1 = 10으로 자릿수가 올라가므로 해당 비트는 0이 맞습니다.

     

     이 외에도 다양한 논리 연산을 해보시기 바랍니다. 직접 실습해보면서, and와 or 연산만큼은 헷갈리지 않도록 체화시키세요!

     

     

     

    반응형

    댓글