티스토리 뷰
앞서 Python 에서 기본적으로 쓰이는 친구들의 타입들에 대해 알아 봤는데, 첫번째로는 데이터를 의미하는 '값' 에 대해 알아봤고, 그 값들을 조작하고 계산하는 '연산자' . 그리고 그 값들의 연산을 참조 및 참고하게 하는 '변수' 를 공부했다.
오늘은 위의 친구들의 무대를 본다고 하면 될 것 같다.
할당
일반적으론 weight 는 73.8 이다. 라고 볼 수 있지만, 개발자들에겐 다르게 보인다고 저번 글에 설명한 적이 있다. 등호 한개는 '할당' 의 의미로 사용되고 있다.
'우측의 73.8이라는 값을 weight라는 변수에 할당한다.' 가 맞는 표현이다. 말 그대로 할당을 하고 있는 문장을 의미하므로 할당문이라고 할 수 있다.
별거아니야? 라고 생각 할 수 있는데, 이렇게 말로 풀어놓은 해설을 알아두어야 나중에 알고리즘문제를 풀때 문제에서 주어지는 문장을 해석하기가 쉽다. 상황이 주어지는 문제도 있지만 힌트로서 주어지는 경우도 있기 때문이다.
여기서 한번 더 자세하게 들어가야 하는 부분이 있다. 흔하게 다들 weight가 73.8을 할당 받았다. 혹은 73.8을 weight 라는 상자에 넣었다 라고 쉽게 설명하는 경우가 있는데, 이렇게 정의할 경우 뒤에 배우는 내용에서 헷갈리는 순간이 오게된다. 순간이 온다면 정리해보려 한다.
'객체' 란 타입을 갖고있는 메모리(RAM) 주소 내의 값이다. 위의 그림과 같이 값이 들어있는 공간(상자)라고 볼 수 있다. 이 때 변수는 해당 변수가 참조하는 객체의 메모리 주소를 갖게된다. 예를들어 변수 weight에 329423 주소를 갖게 되었고 해당하는 주소에 맞는 객체 공간에 들어있는 73.8이라는 값을 바라보게 된다. 이렇듯 간단한 등호 표시 하나에도 무시무시한 과정이 숨어있다.
다시 위로 올라가서 할당문에 '변수 = 값' 을 넣었을 때는 '값을 변수에 할당한다' 라고 했다. 하지만 일반적이지 않은 표현식이 또 있다.
아까와 다른 것은 변수를 변수에 할당한 것인데, 이 경우 my_weight가 73.8을 갖게되는 것은 모두 알 것이다. 정확히는 할당한 것이다. 그런데?! 한달이 지난 내가 살이 빠진다면???
my_weight = 72.5 로 할당한다고 하면, 과연 weight는 72.5로 바뀔까? 아니다. weight는 아직 73.8을 바라보고 있을 것이다. 한번 더 weight를 80.4로 재할당 하면 my_weight는 72.5에서 80.4로 바뀔까?
이를 통해 파이썬은 위로 돌아가는 행동을 하지 않고 앞만보고 달리는 '불도저' 인 것을 알 수있다. 지금 확실하게 잡아두고 가면 후에 헷갈릴 일은 없을 것이다.
Python Tutor (https://pythontutor.com/)
추천 튜터는 파이썬 코드를 넣어서 돌리면 어떻게 프로그램이 실행되는지 시각화 시켜준 프로그램 홈페이지이다.
- 홈페이지 접속 후 원하는 언어를 선택해준다
- 테스트 하고싶은 코드를 입력후에
- render all objects on the heap (Python/Java)를 선택해준다
- Visualize Execution을 눌러 실행한다
- Next를 눌러가며 진행을 보고 조절하여 진행 상황을 살펴본다
주석 (Comment)
만약 내가 코드를 만들었는데 몇년뒤에 다시 보면 그 내용을 직관적으로 알 수 있을까? 아니면 다른 사람이 내 코드를 본다면 과연 한번에 알아볼 수 있을까? 이런 경우를 방지하기위해 주석이 있다. 일반적으로 논문을 보면 하단에 주석을 달아놓은 걸 본 적이 있을 것이다. 코드내 주석은 개발자들간에도 설명이 필요하기 때문에 필수적 요소다. (물론 나는 아직 습관이 들지 않아 쉽지않다. 그만큼 아직 초보라는 것이겠지)
코드가 길어진다면 내가 문제를 풀어나가면서 왜 이 코드를 썼었는지, 어떻게 뼈대를 잡을지 크게 도움이 될 수 있다. 다른 의도로는 잠깐 다른 코드를 테스트 하기위해 해당 코드를 비활성화 시키는 이유도 있다. 다른 방법으로 " " " 와 " " " 로 범위 내 모든 코드를 주석처리하는 법, 내가 원하는 범위를 드래그해서 'Ctrl + /' 커맨드를 통해 맨 앞줄에 #을 채워넣는 방법도 있다. 주로 후자가 일반적이다.
여기까지해서 Python에 대해 간단하게 정리해봤는데, 영어로 치면 a b c, 한글로는 ㄱㄴㄷ 를 배운게 아닌가 싶다. 앞으로 갈길이 멀겠지만, 나비의 날갯짓에 태풍이 일어나리.
'일상코딩 > 노트' 카테고리의 다른 글
Python : 데이터타입 (시퀀스 : list, tuple, range) (1) | 2024.01.17 |
---|---|
Python : 데이터타입 (시퀀스 : 숫자형타입, 문자열) (1) | 2024.01.16 |
Python : 용어, 타입 (0) | 2024.01.15 |
Git : 분산형 버전 관리 (Distributed Version Control) (0) | 2024.01.14 |
CLI ( Command Line Interface) (0) | 2024.01.12 |
- Total
- Today
- Yesterday
- honeymoney
- 백준
- SQL
- JavaScript
- dfs
- Django
- Method
- 카운팅정렬
- views.py
- 연산자
- HTML
- Sequence types
- vue3
- basic syntax
- SQLite
- 함수
- app
- baby-gin
- CodeTree
- Component
- ChatGPT
- 재귀
- 삼성청년SW아카데미
- refactoring
- Python
- 순열
- Authentication System
- ssafy
- vue
- Database
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |