01. 변수와 메모리

안녕하세요. 이전 포스팅 에서는 우리가 Python 코딩을 하기 위한 개발환경을 이루는 요소들에 대해서 다루면서 OS, 인터프리터, 에디터 에 대해서 얘기를 해봤는데요. 이번 포스팅 부터는 본격적으로 Python 코딩에 대해서 시작하겠습니다.

혹시 본인 노트북에 개발환경세팅을 하는것에 어려움이 있었다면, Google 에서 제공하는 Colab 을 이용해서 코딩을 해보시는 것을 추천합니다.

Google Colab 은 클라우드 기반의 무료 Jupyter Notebook 에디터 형태로 Python 스크립트를 작성하고 실행할 수 있는 개발환경 입니다. Colab에 대해서 잘 정리된 글Colab URL은 Reference에 적어두겠습니다.

변수와 메모리

우선 변수와 메모리 에 대해서 개념을 짚고 넘어가겠습니다.

1
2
name = "keunbit"
print(name)
keunbit

자, 위 코드를 봤을 때 감각적으로 이해가 되시지 않나요? Python 이라는 언어가 굉장히 배우기 쉽고 개발자 친화적 이라고 설명드린 이유입니다. 저 한 줄을 읽었을 때 이정도 의미로 생각할 수 있겠네요.

  1. name은 keunbit이다
  2. name과 keunbit은 같다
  3. name을 keunbit으로 정의한다.

좀 더 개발자(?)스럽게 생각을 해보죠, “name이라는 변수에 “keunbit”이라는 값을 할당한다” 라고 얘기하는게 맞습니다. (정확하게 설명하자면, 문자열 타입의 Object를 만들어서 name이라는 변수가 그 Object를 가리키는 것 입니다.) - Everything is object in Python - 중요한 것은 가리킨다 라는 의미인데요. 좀 더 예시를 들어보겠습니다.

1
2
3
name = "keunbit"
print("keubit 이라는 str Object를 만들고")
print(f"변수 'name'이 가르키는 주소는 {id(name)} 입니다.")
keubit 이라는 str Object를 만들고
변수 'name'이 가르키는 주소는 140342633259056 입니다.
1
2
3
4
name1 = name2 = 'daehwan'
print("daewhan 이라는 str Object를 만들고")
print(f"변수 name1이 이 Object를 가르킵니다. 주소는 {id(name1)} 입니다.")
print(f"변수 name2이 이 Object를 가르킵니다. 주소는 {id(name2)} 입니다.")
daewhan 이라는 str Object를 만들고
변수 name1이 이 Object를 가르킵니다. 주소는 140342098563568 입니다.
변수 name2이 이 Object를 가르킵니다. 주소는 140342098563568 입니다.

위 코드를 그림으로 표현하면 다음과 같이 표현할 수 있습니다.

네 그림을 보시면 조금은 이해가 되실 것 같은데요. 그러면 변수를 선언하고 정의하는 과정은 이해가 되셨을테니, 변수 네이밍에 대한 얘기를 하겠습니다. 저는 지금 예시를 들면서 변수를 name, name1, name2 라고 네이밍을 했는데요. 몇가지 rule이 있습니다.

피해야 피해야 하는 rule
1
2
3
4
5
6
1. 특별한 의미가 있는 `예약어`는 쓰지 않는다
- ex) for, if, else 등...
2. %,!,@ 등 특수문자를 사용하지 않는다
- ex) !name, @name, name# 등...
3. 숫자를 맨 앞에 쓰지 않는다.
- ex) 1name, 2name, 등...
고려하면 좋은 rule
1
2
3
4
1. 의미 있는 단어로 표기하는 것이 좋다 (다른 사람이 봤을 때 무엇을 뜻하는지를 바로 알 수 있도록!)
- ex) close_price, open_price
2. 언더바(_)를 활용해서 작성해도 좋다
- ex) my_name

결론

변수명을 짓는 것은 간단해 보이지만 사실은 굉장히 중요한 일 중 하나 입니다. 나중에 다루겠지만, 함수명을 작성하는 것 또한 매우 중요한데요. 네이밍을 잘 지을수록 협업하는 사람과의 코드 공유가 잘되고 커뮤니케이션이 잘 될 수 있기 때문입니다. 앞으로 개발 연습을 하시면서, 변수 네이밍도 신경을 쓰면서 작성하시는 것을 추천합니다.

데이터 타입 도 이번 글에 포함하려 했지만, 굉장히 중요한 내용이기에 다음 포스팅에서 좀 더 자세히 다루면 좋을 것 같습니다. 다음 포스팅을 보시면 위에서 언급했던 str 그리고 Object가 무엇인지 이해가 되실 것 같습니다.

이상으로 이번 포스팅은 마치겠습니다. 추가 의견이나 수정이 필요한 부분이 있다면 언제든지 거침없는 피드백 부탁드립니다! 부족한 글 읽어주셔서 감사합니다!

Reference

댓글