파이썬에서 변수는 값을 할당할 때 만들어진다. 변수에 할당되는 모든 값은 객체이다. 객체를 간단하게 숫자, 문자열 등을 리터럴 표기법으로 작성할 수도 있다. 또한 클래스를 사용해서도 생성할 수 있다.
리터럴 표기법은 객체를 직접 만든다
텍스트를 작성하는 방식을 리터럴 표기법이라고 하는데, 이런 표기법으로 작성해도 내부에서는 각각 자료형에 맞는 객체로 저장한다. 우선 상수와 리터럴의 차이를 알아야 한다. 두 용어를 혼동해서 쓰는 사람이 제법 있다.
상수(constant)란?
상수는 변하지 않는 변수를 의미한다. 즉 상수는 숫자나 문자와 같은 데이터가 될 수도 있지만 클래스같은 객체나 구조체도 넣을 수 있다.
주의할 점은 참조 변수를 상수로 지정할 때 상수니까 데이터가 변하지 않겠지? 라고 생각할 수도 있지만 해당 객체의 내부 데이터는 변경이 가능하다. 어디까지나 참조 변수가 상수이기 때문이다. 물론 이는 C나 JAVA에서 통용되는 이야기고 파이썬은 상수 키워드가 없어 좀 다르긴 하다. 이 링크를 참고하면 도움이 될 것 같다.
리터럴(literal)이란?
리터럴은 데이터 그 자체를 의미한다. 변수에 들어가는 변하지 않는 데이터라고 말할 수 있다.
즉 숫자 9와 같이 변하지 않는 데이터 (int, float, double, string 등등..)를 리터럴이라고 한다. 사실 이들은 모두 객체이긴 하지만 객체 리터럴이라고 하여 데이터가 변하지 않도록 설계를 해놓은 클래스이다. 이를 모두 통틀어서 리터럴이라고 한다.
다시 본론으로 돌아오자. 위에서도 말했듯 파이썬은 상수를 지정하는 특별한 방식은 없다. 물론 변수 이름을 모두 대문자로 써서 상수라는 것을 표시하는 약속이 있다.
CONST = 100
print(CONST)
[결과]
100
리터럴 표기법도 별다를 것이 없다.
print(type(1), type(1.1), type("문자열"))
[결과]
<class 'int'> <class 'float'> <class 'str'>
표현식은 리터럴과 연산자의 묶음이다
값을 표시하는 방식이 리터럴이고, 파이썬에서 모든 값은 객체이다.
리터럴과 연산자(operator)를 혼합해서 표기한 것을 표현식(expression)이라고 한다.
논리와 비교 연산자를 넣어 논릿값으로 처리하는 표현식을 조건식(conditional expression)이라고 한다.
각각의 결괏값은 평가(evaluation)라고 한다.
변수 x에 100을 할당하고 정수 200을 더하면 결괏값이 300이 나올 것이다. 덧셈 연산자는 2개의 항을 더하는 이항 연산자로 하나의 값을 반환하는데, 실제 연산자를 실행할 때는 각 클래스의 내부에 정의된 스페셜 메소드를 변환해서 실행한다.
여기서 덧셈 연산자는 스페셜 메소드 __add__이다.
a = 100
print(a + 200)
print(a.__add__(200))
[결과]
300
300
위 스페셜 메소드는 문자열에도 적용 가능하지만 정수와는 다르게 두 항을 붙이는 식으로 계산한다.
연산자는 스페셜 메소드와 같다
정수 클래스 int에 있는 __add__를 조회하면 slot wapper라는 객체인 것을 알 수 있다. 이 객체는 C언어로 작성된 스페셜 메소드이다. 물론 덧셈 말고 다른 메소드도 있다.
a = 100
print(a + 200)
print(a.__add__(200))
print(int.__add__(a, 200))
[결과]
300
300
300
나눗셈은 연산자가 두 개이다. 몫까지 계산을 다 하는 __truediv__(연산자 /)와 나머지를 계산하지 않는 __floordiv__(연산자 //)가 있다. 정숫값으로 결과를 출력하려면 // 연산자를 사용해야 한다.
print(int.__truediv__(7, 3))
print(int.__floordiv__(7, 3))
[결과]
2.3333333333333335
2
참고
- 한권으로 개발자가 원하던 파이썬 심화 A to Z, 문용준/문성혁 저
'◎ Python > 파이썬 심화 (책)' 카테고리의 다른 글
[파이썬 심화] 6. 문서화와 주석으로 꾸미기 (1) | 2022.08.28 |
---|---|
[파이썬 심화] 5. 문장 꾸미기 (0) | 2022.08.27 |
[파이썬 심화] 4. 객체를 생성한 클래스가 자료형이다 (0) | 2022.08.24 |
[파이썬 심화] 3. 프로그램은 표현식과 문장을 평가해 실행된다 (0) | 2022.08.23 |
[파이썬 심화] 1. 변수에 관한 고찰 (0) | 2022.08.21 |
자기계발 블로그