본문 바로가기
Python/기초 과정

01. 파이썬 변수편

by To올라운더 2023. 6. 6.
반응형

0. 이해보단 수긍...

변수에 앞서 2가지만 깊히 생각하지 않고 이렇게 한다라고 알고 시작해주세요.

1. print라는 내장 함수를 통해 터미널창에 문자 결과를 출력할 수 있다.

  (원하는 대로 동작하는지를 단순히 출력문자를 통해 진행할 예정입니다.)

2. 작성한 코드를 실행하기(run) 위해서는 저장(Ctrl + S)을 한 뒤 

(*수정 내용이 저장되지 않았을 경우, 우측 코드 작성 부분에 [파일명.py  ㆍ ] 모양이 나타나며,

해당 상태에서는 run을 하여도 수정된 내용이 반영되지 않는다.)

   1)  VS Code의 우측 상단, Run 버튼  또는

   2)  터미널에서 python 파일명.py 를 실행해주면

    결과 값을 아래 터미널 영역에서 확인할 수 있다.

반응형

01. 변수

파이썬을 다루는 교재들을 보면 대부분 2가지 중 하나로 시작한다.

본질을 설명하기 위한 객체 또는 변수이다. 

사실 객체라는 것은 너무 포괄적인 범위이고 조금은 철학적인 부분이기도 하기 때문에

우리는 이해를 위해 객체보다 변수에 대해서 먼저 알아보고자 한다.

(*사실 변수들도 객체의 하나이다.)

 

코딩을 다루면 대개 가장 먼저 배우는 용어인

변수는 수학적인 용어로는 변하는 수로 변하지 않는 상수와 반대되는 개념이다.

또는 전산적으로는 가변적인 데이터를 저장할 공간(메모리) 등

다소 어려운 말로도 설명가능하지만,

오늘은 초심자도 이해하기 쉽게 실제 사용사례와 함께 그릇(용기)에 비유해보겠다.

 

1) 변수가 없으면?

 

상황1) 다이어트를 결심한 A가 매일 저녁 몸무게를 기록하려 합니다.

 

아래처럼 변수 사용 없이 직접 출력을 하게 되면,

 

print('오늘 저의 몸무게는 90kg 입니다.')
print('목표 체중까지 10kg이 남았네요.')
print('오늘 닭 가슴살만 먹었는데, 내일 90kg 보다 늘어나지는 않겠죠?')

위의 사진과 같이 몸무게와 관련된 부분을 3부분을 고쳐야합니다.

2줄의 목표체중도 항상 A가 계산해서 10kg을 입력해주어야하고,

혹시나 3부분 중 하나라도 누락되면 내용이 일관성이 있지도 못합니다.

 

이런 부분이 계산을 필요로하는 부분이 10개가 넘고,

수정해야 하는 똑같은 항목이 100여개가 된다면 ....

이건 너무 비효율적인 방법입니다.

 

그래서 개발 시에 변수라는 개념을 이용해서 반복적으로 사용할 값을 담아둡니다.

변수는 '변수명 = 해당 값' 으로 구성되고,

my_weight =90 이라는 변수 선언에 맞춰 처음과 동일한 결과가 나왔습니다.

코딩으로 인한 스트레스로 하루만에 5kg 이 빠졌다면,

이제 우리는 my_weight 만 변경해주면 됩니다.

 

3줄의 체중 계산도 필요 없어졌습니다.

이제 수정해야할 곳이 200개든 300개든 한번에 누락없이 바꿀 수 있는 방법이 생겼습니다.

간단하고 효율적이죠?

 

우리는 이런 상황을 위해 변수라는 개념을 사용합니다.

 

 

2) 그럼 어떻게 변수를 선언하는가?

위에서 잠시 언급한 것처럼 '변수이름 = 변수 값' 으로 선언합니다.

수학에서 사용하는 등호('=')는 좌항과 우항이 같다는 의미로 사용되지만

코딩에서는 조금 다른 의미로 변수 값을 해당 변수에 넣는다(또는 담는다.)는 의미입니다.

 

담는다는 의미에 맞게 변수를 그릇(또는 용기) 라고 생각해보겠습니다.

 

이런 상황을 가정해볼게요.

마트에서 장을 보고 왔습니다.

가방안에는 오늘 구매한 설탕, 소금, 밀가루, 오렌지, 삼겹살 등 여러 식자재가 들어있습니다.

이걸 가져온 장바구니 그대로 냉장고에 집어 넣어 놓기 보단,

사용하기 편리하게 용기에 담아 놓고, 이름을 적어놓으면

다음에 사용할 때에도 훨씬 유용하게 사용하실 수 있으실거에요.

다른 사람이 사용할 때도 어렵지 않게 필요한 양념등을 찾을 수 있을 것도 같구요.

 

코딩도 마찬가지로 필요한 데이터 값들을 변수안에 담아두고 

필요할 때 가져다 쓰게 됩니다.

사용을 하기 위해서 변수 값을 기억하는게 아닌 변수명을 기억하기 때문에 

더 유용하게 사용할 수 있습니다.

 

이런 변수에는 다양한 것들을 담을 수 있는데,

파이썬의 경우, 다음에 배울 자료 유형(문자형, 숫자형, 리스트, 딕셔너리 등) 

모든 유형의 자료를 담을 수 있습니다.

 

몇몇 프로그래밍 언어의 경우 용기의 크기나 용도를 먼저 정하고

데이터를 입력하기 때문에 처음 배울 때 엄격하다는 느낌이 들지만,

파이썬의 경우, 용기의 크기도 용도도 데이터를 담기전에는 정해져 있지 않습니다.

담고 나서야 비로서 문자열 변수 또는 리스트형 변수가 됩니다.

(*C++ 등의 일부 언어들은 변수 선언 시, 미리 자료 유형을 정해두게 되는데

해당 방식이 좋다 나쁘다를 떠나 특징으로 이해하시는게 좋습니다.

파이썬의 경우, 생년월일 같은 숫자형 값을 넣어야 하는 변수에

실수로 다른 문자나 다른 자료 유형들을 넣을 수 있지만,

C++과 같은 숫자형이라는 제한을 미리하기 때문에 잘못된 문자가 들어갈 수 조차 없는 구조가됩니다.)

 

3) 변수명 조건

어쨋든, 개발자(우리)가 데이터를 담을 변수명을 정하게 되는데,

변수명을 정할 때도 몇 가지 규칙이 있습니다.

 


① 변수 이름은 대소문자를 구분합니다.

  - 구별 뿐만 아니라 암묵적인 약속들이 있는데

    클래스의 경우 첫번째 글자를 대문자로 한다거나

    하는 등의 동작과는 무관하나 협업을 위한 (소소한) 약속들이 있습니다.


② 변수 이름을 시작 할 때는 숫자, 특수 문자의 사용을 할 수 없습니다.  

     대문자 또는 소문자를 이용하고, 언더바('_')를 사용하기도 하나

      '_' 또한 클래스나 객체 내의 보호 속성을 정의할 때는 첫 글자를 언더바('_') 하나 사용

       (보호속성은 외부 클래스와 객체에서 속석에 직접 접근해서 사용하지 않도록 주의하라는 뜻)
      내부에서만 사용되는 스페셜 속성이나 메소드는 이름 양쪽에 (_)를 붙여서 사용 하는 형태를 가집니다.

 

③ 파이썬에서는 변수 이름을 한글로 만들 수 있지만, 피하는 것을 권장합니다.

    글자 깨짐이나 호환간 문제가 발생할 수 있으므로, 영문과 숫자로 된 폴더명과 변수이름 사용을 권장.


④ Return, not, try, while, for, if, import 와 같은 파이썬 내부에서 사용하는 키워드는 변수 이름으로 사용할 수 없다.

    만약 예약어(keyword)와 같은 단어를 변수로 사용하고 싶을 땐 keyword뒤에 (_)를 추가하는 방법이 있다.

 

⑤ 유의미한 변수명으로 누구나 알기쉽게 작성한다.

  변수만 보더라도 해당 값이 의미하는 바를 알 수 있게 작성한다.

  예를 들어 성인인지 확인하는 변수를 isAdult 로 하게 되면 

  디버그나 수정 작업이 있을 때 코드 분석이 더 용이하다.

  일반적으로 '_'를 이용한 스네이크 케이스 라는 방법과 단어 첫 글자를 대문자로 표기하는 캐멀케이스 형태를 사용한다.

  1) 스네이크케이스(snake case)

     : 유의미한 단어들 사이에 '_'를 입력하여 뱀(snake)같은 모습을 하여 생긴 이름. ex) get_success_lists

  2) 캐멀케이스(camel case)

     : 유의미한 단어의 첫 글자를 대문자로 표기(시작은 소문자)하여 낙타의 등과 같은 모습을 하여 생긴 이름

      . ex) getSuccessLists

  3) 파스칼케이스(pascal case)

     : 파스칼 언어에서 표기하던 방식과 유사한 점에서 생긴 이름, 첫 단어도 대문자로 표기. ex) GetSuccessLists

스네이크케이스 캐멀케이스 파스칼케이스
get_success_lists getSuccessLists GetSuccessLists

 

4) 피해야 하는 변수명

  ① 흔한 단어 또는 예약어를 이용한 변수명

   : class 나 int 같이 기존에 예약어로 사용 중인 단어를 예약어로 사용할 경우 오류(error)가 발생하거나 

     예상치 못한 장애가 발생할 수 있습니다.

   ② 단어 앞 뒤에, 언더바(또는 언더스코어 '_') 를 이용한 변수명

    : 스네이크케이스와 달리 단어 중간에 넣는 '_' 가 아닌 변수명 앞이나 뒤에 생성하는 '__init__', '__name__' 등과 같은 변수명의 경우 파이썬 내부에서 생성되는 변수들이기 때문에 사용을 피해야한다.

 

 

 

처음 배울 때 변수는 단순히 '변수명 = 변수 값' 으로 사용할 수 있지만

위의 내용을 참고하면 좀 더 깔끔하고 디버깅 작업이나 협업시에도

업무적 효율을 더 높일 수 있습니다.

 

 

반응형