파이썬 기초

[파이썬 기초] 1. 파이썬 변수

빈이름 2024. 6. 10. 13:02

변수는 코딩에서 빠질 수 없는 가장 기본적인 요소입니다.

여러분이 알고 있는 변수는 어떤 건가요? 글자 그대로 '변할 수 있는 값'이라는 의미로 알고 계시겠죠?

코딩에서 변수의 의미도 크게 다르지 않습니다. 코딩에서 변수는 '변할 수 있는 값'을 저장하는 것을 의미합니다. 지금부터 변수에 대해 알아보겠습니다.

1. 변수 선언과 정의
2. 변수 타입
3. 변수 연산
4. 변수 이름

1. 변수 선언과 정의

변수를 사용하기 위해선 "선언"과 "정의"가 필요합니다.

변수의 선언이란 변수를 새로 만드는 것을 뜻합니다. 그리고 변수의 정의란 변수의 값을 지정하는 것을 말합니다. 파이썬에서는 변수의 선언과 정의를 한번에 수행합니다. 변수를 하나 만들어보겠습니다.

a = 5

위 한 줄이 끝입니다. 'a' 라는 이름의 변수를 만들고, 5라는 값을 변수 'a' 에 저장했습니다. 잘 저장됐는지 확인하기 위해 print()를 사용해볼까요?

print(a) # 5

'5' 라고 출력되는 것을 확인할 수 있습니다. 이제 변수 a는 5라는 값을 갖는 겁니다. 정말 쉽죠?

 

'변수' 이기 때문에 값을 변경하는 것도 가능합니다. 변수 a의 값을 변경해 보겠습니다.

a = 3
a = 10
print(a)

위 코드를 실행하면 어떤 값이 출력될까요?

정답은 '10'입니다. 첫줄에서 a를 3으로 정의했지만 두번째 줄에서 10으로 값을 다시 바꿨기 때문에, 앞의 3은 사라지고 10이 저장되게 됩니다. 그렇기 때문에 print(a)를 하면 10이 출력되게 됩니다.

 

다른 변수의 값을 이용해 변수의 값을 정의하는 것도 가능합니다.

a = 3
b = a
print(a, b)

첫번째 줄에서 변수 a에 3을 저장했습니다.

두번째 줄에선 변수 b에 변수a 값을 저장했습니다. 그러면 변수 b의 값은 뭐가 될까요?

변수 a의 값인 3이 저장될 겁니다. 그렇기 때문에 print(a, b)를 실행하면 '3, 3' 이 출력됩니다.

 

그러면 변수 b가 변수 a의 값을 저장한 뒤에 변수 a의 값을 바꾸면 어떻게 될까요?

a = 3
b = a
a = 7
print(a, b)

변수 a의 값을 바꿨으니 변수 b의 값도 7로 바뀔까요? 아니면 변수 b는 그대로 3일까요?

정답은 변수 b는 그대로 3으로 남게 됩니다. 변수에 다른 변수의 값을 넣을 땐 그 변수의 값을 그대로 복사해 올 뿐이지, 그 변수와 같은 변수가 되는 것은 아니기 때문입니다. 이런 부분이 헷갈릴 수 있는데 잘 기억해 주시기 바랍니다.

2. 변수 타입

코딩에서 변수는 여러가지 타입을 갖습니다. 타입이란, 변수의 종류를 뜻합니다. 파이썬의 변수 타입은 다음과 같은 종류들이 있습니다.

이름 의미 예시
int (integer) 정수 : 소수점이 없는 숫자 5
float 소수 : 소수점을 포함하는 숫자 3.7182
str (string) 문자열 : 문자, 글자를 의미. "Hello world!, 안녕하세요!"
bool (boolean) 참, 거짓을 나타나내는 논리형 변수. True, False
NoneType 타입이 존재하지 않는 변수. None

파이썬에선 변수에 어떤 값이 저장되어 있느냐에 따라 타입이 자동으로 결정됩니다.

a = 5
b = 1.3
c = "Hello!"
d = True
e = None

print(type(a))

변수의 타입을 확인할 땐 'type(변수 이름)' 함수를 사용합니다. 이를 이용해서 위 5개의 변수의 타입을 확인해 보면 위에서부터 int, float, str, bool, NoneType이 차례로 나오는 것을 확인할 수 있습니다.

변수 타입에 따라 똑같은 명령어라도 다르게 작동하거나 에러를 발생시킬 수 있으니 변수의 타입을 확인하는 습관을 들이면 좋습니다. 변수의 연산을 공부하면서 이런 경우들을 알아봅시다.

3. 변수 연산

수학과 같이 변수는 연산이 가능합니다. 파이썬에는 아래와 같은 연산자들이 존재합니다.

+ 덧셈 - 뺄셈 * 곱셈
/ 나눗셈 // 나눗셈 결과의 몫 % 나눗셈 결과의 나머지
** 제곱        

연산은 수학과 똑같이 가능합니다.

a = 3 + 5 # 8
b = 4 ** 2 # 16
c = 10 // 3 # 3
d = 10 % 3 # 1

나눗셈 결과의 몫과 나머지를 구할 수 있는 '//'와 '%'를 빼고는 모두 익숙할 것으로 생각됩니다. 연산자 자체는 어렵지 않죠?

 

한 가지 주의할 점은 나눗셈('/') 연산을 수행하면 결과가 무조건 float 으로 바뀐다는 겁니다.

a = 10 / 2
print(a) # 5.0

10/2의 결과는 5로 나누어 떨어지지만 결과는 int가 아닌 float으로 나타나게 됩니다. 이걸 유의해 주세요.

 

파이썬 연산도 수학 법칙과 같이 여러 연산자가 있으면 곱셈과 나눗셈을 먼저 계산합니다.

print(3+2*4) # 곱셈을 먼저 계산해 11을 출력한다.

반대로 덧셈을 먼저 계산하고 싶다면, 수학 법칙과 같이 괄호를 사용하면 덧셈을 먼저 계산하도록 할 수 있습니다.

print( (3+2)*4 ) # 괄호 안의 덧셈을 먼저 계산해 24를 출력한다.

수학시간에 배운 것과 다른 점은 파이썬 연산에선 중괄호와 대괄호를 사용하지 않습니다. 왜냐하면 중괄호와 대괄호는 코딩에서 다른 것을 의미하기 때문에 중괄호, 대괄호를 사용할 수 없습니다. 대신에 괄호를 중첩해서 씁니다. 그러면 안에 있는 괄호부터 연산을 수행합니다.

a = 7 - ((3+2) % 3 - (5+2))
print(a) # 12

직접 여러가지 연산자를 사용해보고 어떤 결과가 나올지 예측하고 확인해 보시죠.

 

파이썬에선 문자열도 덧셈 연산이 가능합니다. 문자열끼리 덧셈을 하면 어떻게 될까요?

a = "Hello"
b = "World"
print(a+b) # "HelloWorld"

문자열에서 덧셈을 수행하면 두 글자를 그대로 이어붙이게 됩니다. 뺄셈이나 나눗셈 같은 연산은 불가능합니다.

또 한 가지 처음 코딩을 할 때 많이 헷갈리는 것이 문자열에 숫자를 쓴 경우입니다.

a = 5
b = "3"
print(a-b)

위 코드를 실행하면 어떻게 될까요?

 

정답은 에러가 발생하게 됩니다. 왜냐하면 변수 a는 정수형이지만 변수 b는 문자열로 둘의 타입이 서로 다르기 때문입니다. 만약 위 수식을 계산하고 싶다면 변수 b의 타입을 정수형으로 바꿔줘야 합니다.

a = 5
b = "3"
print(a-int(b))

'int(변수 이름)' 명령어를 통해 문자열을 정수형으로 타입을 바꿀 수 있습니다. 반대로 'str(변수 이름)'을 이용해 정수를 문자열로 바꾸는 것도 가능합니다. 이렇게 타입을 바꾸는 것을 '형변환'이라고 합니다.

 

연산은 아래와 같이 쓰는 것도 가능합니다.

a = 5
a = a + 2
print(a)
a += 2
print(a)

위 결과를 확인하면 알 수 있지만 'a = a + 2'와 'a += 2'는 서로 같은 의미입니다. 'a = a + 2' 하고 'a'를 두번 쓰기 귀찮았던 프로그래머들이 만든 표현이라고 생각하면 됩니다. '+=' 뿐만 아니라 다른 연산자들도 모두 사용 가능합니다.

a = 10
a /= 5
a %= 3

4. 변수 이름

지금까지 변수 이름을 간단히 'a', 'b', 'c' 이런 식으로 썼습니다. 하지만 코딩을 하다보면 변수 이름을 이처럼 간단히 쓰기 보다는 변수가 가리키는 것을 알 수 있도록 확실한 이름을 지어주는 것이 좋습니다.

studentID = "2047218"
password = "kkk111222333"

위와 같이 해당 변수가 어떤 값을 나타내는 것인지 이름을 확실히 정해주는 것이 좋습니다. 하지만 이 변수의 이름도 아무거나 지정이 되는 것은 아니고 특정한 규칙이 있습니다.

  • 변수 이름은 영어와 숫자, 언더바(_)만 사용 가능하다.
    영어, 숫자, 언더바를 제외한 한글, 특수기호 등은 변수 이름에 일체 사용이 불가능합니다.
  • 변수 이름은 영어와 언더바로만 시작 가능하다.
    변수 이름 앞에 숫자로 시작하는 것은 불가능합니다.
  • 변수 이름은 대소문자를 구분한다.
    즉, 변수 'a'와 변수 'A'는 서로 다른 변수입니다.

즉, 아래와 같은 변수 이름들은 설정 불가능합니다.

아이디 = "kkk11223344"
price$$ = 45000
Hello World = "Hello World"
43ion = 887

 

여기까지 변수에 대해 알아 봤습니다. 다음엔 함수에 대해 알아보겠습니다.