변수(Variables)

pengpengIT·2024년 1월 28일

파이썬

목록 보기
3/6

파이썬 변수는 파이썬 프로그램 내에서 값들을 저장하는 데 사용되는 예약된 메모리 위치다.
이는 변수를 생성할 때 메모리에 일정 공간을 예약한다는 것을 의미한다.
변수의 데이터 타입에 따라 파이썬 인터프리터는 메모리를 할당하고 예약된 메모리에 어떤 데이터를 저장할지 결정한다.
따라서 파이썬 변수에 다양한 데이터 유형을 할당함으로써 정수, 십진수 또는 문자를 이 변수에 저장할 수 있다.

목차
1. 메모리 주소
2. 변수 생성 =
3. 변수 출력 print()
4. 변수 삭제 del
5. 변수 유형 얻기 type()
6. 변수 캐스팅
7. 변수의 대소문자 구분
8. 변수 다중 할당
9. 변수명 규칙
10. 상수
11. 파이썬 변수 vs C/C++ 변수

1. 메모리 주소

다양한 데이터 유형에 속하는 데이터 항목은 컴퓨터의 메모리에 저장된다.
컴퓨터의 메모리 위치는 번호 또는 주소가 있으며, 이는 내부적으로 이진 형태로 표현된다.
데이터도 컴퓨터가 이진 표현 원리를 따르기 때문에 이진 형태로 저장된다.
다음 다이어그램에서는 문자열 "May"와 숫자 18이 메모리 위치에 저장된 것이 나타나 있다.

어셈블리 언어를 알고 있다면 이러한 데이터 항목과 메모리 주소를 기계어 명령으로 변환하고 특정 메모리 위치에 저장하는 것이 가능하다. 그러나 모든 사람에게는 쉬운 일이 아니다.
파이썬 인터프리터와 같은 언어 번역기는 이러한 유형의 변환을 수행한다.
이는 객체를 임의로 선택된 메모리 위치에 저장한다.
파이썬의 내장 함수인 id() 함수는 객체가 저장된 메모리 주소를 반환한다.

>>> "May"
May
>>> id("May")
2167264641264

>>> 18
18
>>> id(18)
140714055169352

데이터가 메모리에 저장되면 특정 프로세스를 수행하기 위해 반복적으로 액세스해야 한다.
데이터를 ID로부터 가져오는 것은 분명히 까다로운 작업이다.
파이썬과 같은 고급 언어는 메모리 위치를 참조하기 위해 적절한 별칭 또는 레이블을 제공하는 것이 가능하게 한다.

위의 예제에서 May의 위치를 month로, 18이 저장된 위치를 age로 레이블링해 보면, 파이썬은 할당 연산자 (=)를 사용하여 객체를 레이블에 바인딩한다.

>>> month="May"
>>> age=18

데이터 객체(May)와 그 이름(month)은 동일한 id()를 가지고 있다.
또한 18과 age의 id()도 동일하다.

>>> id(month)
2167264641264
>>> id(age)
140714055169352

라벨은 식별자다.
보통 변수라고 불린다.
파이썬 변수는 객체에 대한 참조 또는 포인터인 상징적인 이름이다.

2. 변수 생성

파이썬 변수는 메모리 공간을 예약하거나 변수를 만들기 위한 명시적인 선언이 필요하지 않다.
즉, 파이썬에는 변수를 선언하는 명령이 없다.
변수는 처음 값을 할당하는 순간 생성된다.
등호(=)는 변수에 값을 할당하는 데 사용된다.

= 연산자 왼쪽의 피연산자는 변수의 이름이며, = 연산자 오른쪽의 피연산자는 변수에 저장된 값이다.

# 변수 생성 예시

counter = 100          # Creates an integer variable
miles   = 1000.0       # Creates a floating point variable
name    = "Zara Ali"   # Creates a string variable

3. 변수 출력

파이썬 변수를 생성하고 값에 할당한 후, print() 함수를 사용하여 변수를 출력할 수 있다.
다음은 이전 예제의 확장 버전으로, 파이썬에서 다양한 변수를 출력하는 방법을 보여준다.

# 변수 출력 예시

counter = 100          # Creates an integer variable
miles   = 1000.0       # Creates a floating point variable
name    = "Zara Ali"   # Creates a string variable

print (counter)
print (miles)
print (name)

여기서 100, 1000.0 및 "Zara Ali"는 각각 counter, miles 및 name 변수에 할당된 값이다.
위의 파이썬 프로그램을 실행하면 다음과 같은 결과가 생성된다.

# 변수 출력 결과 예시

100
1000.0
Zara Ali

여러 변수를 쉼표(,) 또는 +로 구분하여 출력할 수 있다.
여러 변수를 출력할 경우 쉽표를 사용하는 것이 가장 좋은 방법이다. (아래 + 연산자의 주의점 참고)

# 여러 변수 출력 예시(,)

x = "Python"
y = "is"
z = "awesome"
print(x, y, z)
# 여러 변수 출력 예시(+)

x = "Python "
y = "is "
z = "awesome"
print(x + y + z)
  • + 연산자 주의점
    공백 문자에 주의해야 한다. 공백 문자가 없으면 결과는 "Pythonisawesome"이 된다.
    숫자의 경우 + 는 수학 연산자로 작동한다.
    문자열과 숫자를 + 로 결합하려고 하면, 오류가 표시된다.

4. 변수 삭제

del 문을 사용하여 숫자 객체에 대한 참조를 삭제할 수 있다.
del 문의 구문은 다음과 같다.

# 변수 삭제 예시

del var1[,var2[,var3[....,varN]]]]

del 문을 사용하여 단일 객체나 여러 객체를 삭제할 수 있다.

# 변수 삭제 del문 예시

del var
del var_a, var_b

다음 예제에서는 변수를 삭제하는 방법을 보여준다.
삭제된 변수를 사용하려고 하면 파이썬 인터프리터가 오류를 발생시킨다.

# 변수 삭제 오류 예시

counter = 100
print (counter)

del counter
print (counter)

이로 인해 다음과 같은 결과가 생성된다.

# 변수 삭제 오류 결과 예시

100
Traceback (most recent call last):
  File "main.py", line 7, in <module>
    print (counter)
NameError: name 'counter' is not defined

5. 변수 유형 얻기

파이썬 변수의 데이터 유형은 내장 함수인 type()을 사용하여 얻을 수 있다.

# 변수 유형 type() 예시

x = "Zara"
y =  10
z =  10.10

print(type(x))
print(type(y))
print(type(z))

이로 인해 다음과 같은 결과가 생성된다.

# 변수 유형 type() 결과 예시

<class 'str'>
<class 'int'>
<class 'float'>

6. 변수 캐스팅

캐스팅을 사용하여 변수의 데이터 유형을 지정할 수 있다.

# 변수 캐스팅 예시

x = str(10)    # x will be '10'
y = int(10)    # y will be 10 
z = float(10)  # z will be 10.0

print( "x =", x )
print( "y =", y )
print( "z =", z )

이로 인해 다음과 같은 결과가 생성된다.

# 변수 캐스팅 결과 예시

x = 10
y = 10
z = 10.0

7. 변수의 대소문자 구분

파이썬 변수는 대소문자를 구분한다.
즉, Age와 age는 서로 다른 변수다.

# 변수 대소문자 구분 예시

age = 20
Age = 30

print( "age =", age )
print( "Age =", Age )

이로 인해 다음과 같은 결과가 생성된다.

# 변수 대소문자 구분 결과 예시

age = 20
Age = 30

8. 변수 다중 할당

파이썬은 하나의 문에서 둘 이상의 변수를 초기화할 수 있다.
다음 예에서 세 변수가 동일한 값을 가지도록한다.

>>> a=10
>>> b=10
>>> c=10

개별 할당 대신 다음과 같이 하나의 할당 문에서 수행할 수 있다.

>>> a=b=c=10
>>> print (a,b,c)
10 10 10

다음 경우에는 서로 다른 값을 가진 세 변수가 있다.

>>> a=10
>>> b=20
>>> c=30

이러한 개별 할당 문은 하나로 결합될 수 있다.
등호 (=) 연산자의 왼쪽에는 쉼표로 구분된 변수 이름을 지정하고, 오른쪽에는 쉼표로 구분된 값들을 지정해야 한다.

>>> a,b,c = 10,20,30
>>> print (a,b,c)
10 20 30

예시 - 한 줄에 여러 변수에 동일 객체 할당

# 변수 다중 할당 예시 1

a = b = c = 100

print (a)
print (b)
print (c)

이렇게 하면 다음과 같은 결과가 생성된다.

# 변수 다중 할당 결과 예시 1

100
100
100

여기서 정수 객체가 값 1로 생성되고 세 변수가 동일한 메모리 위치에 할당된다.
여러 객체를 여러 변수에 할당할 수도 있다.

예시 - 여러 변수에 여러 객체 할당

# 변수 다중 할당 예시 2

a,b,c = 1,2,"Zara Ali"

print (a)
print (b)
print (c)

이렇게 하면 다음과 같은 결과가 생성된다.

# 변수 다중 할당 결과 예시 2

1
2
Zara Ali

여기서 값이 각각 1, 2인 두 정수 객체가 변수 a와 b에 할당되고 값이 "Zara Ali"인 문자열 객체가 변수 c에 할당된다.

9. 변수명 규칙

모든 파이썬 변수는 a, b, c와 같이 고유한 이름을 가져야 한다.
변수 이름은 color, age, name 등과 같이 의미가 있을 수 있다.
파이썬 변수의 이름을 지을 때 주의해야 할 몇 가지 규칙이 있다.

파이썬 변수명 규칙
1) 변수 이름은 문자 또는 밑줄 문자로 시작해야 한다.
2) 변수 이름은 숫자나 $, (, *, % 등의 특수 문자로 시작할 수 없다.
3) 변수 이름은 알파벳, 숫자 및 밑줄 문자만 포함할 수 있다. (A-z, 0-9, _)
4) 파이썬 변수 이름은 대소문자를 구분하므로 Name과 NAME은 파이썬에서 서로 다른 변수다.
5) 파이썬 예약 키워드는 변수 이름으로 사용할 수 없다.

변수의 이름에 여러 단어가 포함되어 있다면 다음과 같은 몇 가지 규칙을 사용해야 한다.

1) Camel case(낙타 표기법)
첫 글자는 소문자, 그 후 각 단어의 첫 글자는 대문자로 표기한다.
예시 : kmPerHour, pricePerLitre

2) Pascal case(파스칼 표기법)
각 단어의 첫 글자를 대문자로 표기한다.
예시 : KmPerHour, PricePerLitre

3) Snake case(스네이크 표기법)
단어 사이에 밑줄 문자(_)를 사용하여 구분한다.\
예시 : km_per_hour, price_per_litre

예시 - 유효한 변수명

# 유효한 변수명 예시

counter = 100
_count  = 100
name1 = "Zara"
name2 = "Nuha"
Age  = 20
zara_salary = 100000

print (counter)
print (_count)
print (name1)
print (name2)
print (Age)
print (zara_salary)

이렇게 하면 다음과 같은 결과가 생성된다.

# 유효한 변수명 결과 예시

100
100
Zara
Nuha
20
100000

예시 - 유효하지 않은 변수명

# 유효하지 않은 변수명 예시

1counter = 100
$_count  = 100
zara-salary = 100000

print (1counter)
print ($count)
print (zara-salary)

이렇게 하면 다음과 같은 결과가 생성된다.

# 유효하지 않은 변수명 결과 예시

File "main.py", line 3
    1counter = 100
           ^
SyntaxError: invalid syntax

한 번 변수를 사용하여 데이터 객체를 식별하면 해당 id() 값을 사용하지 않고 여러 번 사용할 수 있다.
여기서 사각형의 높이(height)와 너비(width) 변수가 있다.
이러한 변수를 사용하여 면적과 둘레를 계산할 수 있다.

예시 - 변수 여러번 사용

>>> width=10
>>> height=20
>>> area=width*height
>>> area
200
>>> perimeter=2*(width+height)
>>> perimeter
60

변수를 사용하는 것은 스크립트나 프로그램을 작성할 때 특히 유리하다.
다음 스크립트도 위의 변수들을 사용한다.

# 변수 여러번 사용 예시

width = 10
height = 20
area = width*height
perimeter = 2*(width+height)
print ("Area = ", area)

print ("Perimeter = ", perimeter)

위의 스크립트를 .py 확장자로 저장하고 명령 줄에서 실행하면 다음 결과가 나타납니다.

# 변수 여러번 사용 결과 예시

Area = 200
Perimeter = 60

10. 상수

파이썬에는 공식적으로 정의된 상수가 없다.
그러나 모든 대문자 이름과 밑줄을 사용하여 변수를 상수로 취급하도록 지시할 수 있다.
예를 들어 PI_VALUE라는 이름은 변수가 다시 정의되거나 어떤 방식으로든 변경되지 않도록 하는 것을 나타낸다.

모든 대문자를 사용한 네이밍 컨벤션은 때로 '스크리밍 스네이크 케이스'로 불리며, 여기서 대문자(스크리밍)와 밑줄(스네이크)이 사용된다.

11. 파이썬 변수 vs C/C++ 변수

파이썬에서 변수의 개념은 C/C++과는 다르게 작동한다.
C/C++에서 변수는 명명된 메모리 위치다.
만약 a=10이고 b=10이라면, 두 변수는 서로 다른 메모리 위치다.
각각의 메모리 주소를 100과 200이라고 가정해 보자.

만약 "a"에 새로운 값인 50을 할당하면, 메모리 주소 100에 있는 10이 덮어씌워진다.

파이썬 변수는 객체를 참조하며 메모리 위치가 아니다.
객체는 메모리에 한 번만 저장된다.
여러 변수는 사실 같은 객체에 대한 여러 레이블일 뿐이다.

문장 a=50은 메모리의 다른 위치에 새로운 int 객체 50을 생성하고, "b"에 의해 참조된 객체 10은 그대로 남겨진다.

또한, 만약 b에 다른 값이 할당되면, 객체 10은 더 이상 참조되지 않는다.

파이썬의 가비지 컬렉터 메커니즘은 참조되지 않는 객체가 차지한 메모리를 해제한다.
파이썬의 정체성 연산자는 두 피연산자가 동일한 id() 값을 가지면 True를 반환한다.

>>> a=b=10
>>> a is b
True
>>> id(a), id(b)
(140731955278920, 140731955278920)

참조 1. tutorialspoint, 「Python - Variables」, tutorialspoint 사이트
참조 2. w3schools, 「Python Variables」, w3schools 사이트
참조 3. w3schools, 「Python - Output Variables」, w3schools 사이트

profile
펭귄을 좋아하고 언어를 공부하는 기획자

0개의 댓글