SW 설계/파이썬

파이썬 기초: 변수

yztech 2021. 10. 17. 13:47
반응형

변수

변수 (Variable) 란 데이터; 혹은 값을 저장하는 공간이다. 즉, 컴퓨터가 프로그램에서 사용하는 데이터를 기억하는 곳이고, 이는 컴퓨터 메모리에 저장된다. 컴퓨터에서 실행되는 모든 프로그램들은 실행될때 실행될 코드와 데이터들이, 별도의 코드 실행 영역과 코드 실행에 필요한 데이터 영역에 올라오게 된다 (load).

예를 들어, 아래 그림과 같이 우리 눈 앞에 멋진 자동차가 있어서, 그 상황을 기억해서 친구에게 얘기하게 될 경우를 생각해보자. 우리는 그 자동차를 눈으로 보고, 우리 뇌 속에 자동차 모양, 색깔, 번호판, 메이커 등을 기억하게 된다. 이후 친구를 만나면, 뇌 속에 기억된 내용을 가지고 그 자동차에 대해 친구에게 말할 수 있게 된다. 자동차를 말하기 위해 우리가 뇌의 한 공간에 이와 관련된 데이터를 기억하지 않으면 친구에게 말할 수 없는 것처럼, 컴퓨터도 이 자동차에 대한 데이터를 메모리의 한 공간인 변수에 저장해야 코드에서 사용할 수 있게 된다.

https://blog.kakaocdn.net/dn/pjRaP/btreFkco4In/LNW3L8ZYORpYCwZbChF8x0/img.png

 

사용 방법

우리는 앞에서 프로그램이 실행되는 과정을 다룬 장에서 이미 a, b, c와 같은 변수를 언급했다.

프로그래밍 언어에서는 변수를 정의하고 저장하는 문법들이 존재한다. MATLAB, python과 같이 변수간에 형변환이 자동으로 수행되어, 변수의 자료형을 정의하거나 이름을 미리 선언할 필요가 없는 언어들에서는, 값을 저장할 때는 대입 연산자 (= 기호; assignment operator) 를 사용하면 된다. 이는 우측의 값을 좌측 변수에 대입; 저장하라는 의미이다. 하지만, C나 JAVA와 같은 언어들에서는 변수를 만들때 미리 자료형을 지정해야 한다.

변수 이름 = 변수에 저장할 값

위 그림에서 사용된 변수들을 직접 코딩해보자. 아래 예에서는 makercolor는 문자열 변수로 사용하고, number는 숫자형 변수로 사용되었다. (7-9)에서 print는 입력된 자료형에 맞게 화면에 자동으로 값을 출력해주는 함수이다. (11-13)에서 type은 사용된 변수의 자료형을 반환한다. 출력 결과에서 보면 maker, color 는 문자열 변수이므로 <class 'str'> 로 출력되고, number는 숫자형, 특히 정수형 변수이므로 <class 'int'>로 출력된다.

// variable.py

maker = "Porsche"
color = "Blue"
number = 8412

print(maker)
print(color)
print(number)

print(type(maker))
print(type(color))
print(type(number))

 

위 코드를 실행하면 다음과 같이 출력된다.

Porsche
Blue
8412
<class 'str'>
<class 'str'>
<class 'int'>

위 그림의 예제를 PyCharm에서 직접 구현하고, 실행해서 결과 값을 확인해 보자. PyCharm 실행후 File > New Project 를 선택해서 새로운 프로젝트를 생성하고 아래와 같이 구현한다. 본 자료에서는 test이라는 프로젝트로 생성하였다.

 

우측 상단의 화살표 **>** 모양을 클릭하면, 프로그램이 실행 (Run) 된다.

 

 

지금까지 변수에 대해 알아보았다. 우리가 뇌 속에 무언가 기억해야 나중에 사용할 수 있는 것처럼, 컴퓨터도 무언가 기억하고 나중에 사용하기 위해 값을 저장한 것이 변수라고 생각하면 변수에 대해 이해하기 쉬울 것 같다.

참고

파이썬에서는 모든 변수들이 클래스이다. 그리고 maker , number와 같은 변수는 문자열 클래스의 객체, 정수형 클래스의 객체가 된다. 위의 출력 결과에서 확인해보면, type(maker)의 결과인 <class 'str'>maker의 타입이 문자열 클래스라는 것이고, type(number)의 결과인 <class 'int'>는 타입이 정수형 클래스라는 것이다.

클래스 메소드 확인

파이썬의 모든 변수는 클래스이므로, 각 클래스마다 정의된 메소드들이 있다.

dir함수는 각 클래스에서 정의된 메소드를 확인할 수 있다. 아래 예제는 숫자형 변수 number의 메소드들이다.

>>> dir(number)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

변수명 생성 규칙

파이썬도 다른 프로그래밍 언어들과 비슷한 이름 생성 규칙이 있다.

  • 변수명에는 영문자, 숫자, 언더스코어(_)를 사용할 수 있다: name_1, number1, maker_id
  • 첫 글자는 숫자가 될 수 없다: 1_name, 2_number
  • 파이썬에서 사용하는 예약어(keyword)는 변수명이 될 수 없다: for, while, if

변수명 생성 약속

변수명을 생성하는 규칙이외에, 프로그래머들 사이에 보편적으로 사용되는 변수명을 만드는 약속이 있다. 가장 많이 사용하는 것이 PEP-8방식으로 아래와 같은 약속하게 변수명을 정하게 되는데, 이런 규칙을 사용하면 다른 사람과 같이 프로그램일 개발할 때 코드의 가독성 (readability) 이 좋아진다.

  • 한 단어로 구성된 변수는 소문자로 적는다: name, maker, number
  • 두 단어 이상으로 구성된 변수는 언더스코어로 구분한다: maker_id, number_format
  • 예약어와 겹칠 경우에는 뒤에 언더스코어를 붙인다: time_, date_
  • 상수는 대문자와 언더스코어를 같이 사용한다: MAX_NUM, MAX_ID, MAX_STR_LEN
반응형