Development Tip

Python 강좌 02 - 변수

MoonLight314 2024. 12. 23. 10:59
728x90

이번 강좌는 Python의 변수에 관해서 알아보도록 하겠습니다.

Python의 변수는 값을 저장하고 참조하기 위한 이름입니다.

Python은 동적 타이핑 언어로, 변수를 선언할 때 데이터 타입을 명시할 필요가 없습니다.

대신, Python은 변수에 할당된 값을 보고 데이터 타입을 자동으로 결정합니다.

 

 

1. 기본 사항

 

1.1. 변수의 특징

1.1.1. 동적 타이핑

변수를 선언할 때 데이터 타입을 지정하지 않아도 됩니다. 변수에 다른 타입의 값을 할당할 수도 있습니다.

x = 10 # 정수 타입 (int)
x = "Hello" # 문자열 타입 (str)
print(x) # Hello

1.1.2. 객체 참조

변수는 값이 저장된 메모리 위치를 참조합니다. 따라서 두 변수가 같은 객체를 참조할 수도 있습니다.

a = [1, 2, 3]
b = a # 같은 객체를 참조
b.append(4)
print(a) # [1, 2, 3, 4]

1.1.3. 타입 변경 가능

Python에서는 동일한 변수에 다른 타입의 값을 할당할 수 있습니다.

var = 42 # 정수
print(type(var)) # <class 'int'>
var = "Python" # 문자열
print(type(var)) # <class 'str'>

1.1.4. 이름 규칙

변수 이름은 알파벳, 숫자, 밑줄(_)을 사용할 수 있습니다.

숫자로 시작할 수 없으며, Python의 키워드는 사용할 수 없습니다.

# 올바른 변수 이름
my_var = 10
_hidden = 20
num3 = 30

# 잘못된 변수 이름
# 3num = 40 # 숫자로 시작
# def = 50 # 키워드 사용

 

1.1.5. 케이스 민감성

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

var = 10
Var = 20
print(var) # 10
print(Var) # 20

 

1.2. 변수의 선언 및 할당

Python에서 변수 선언은 단순히 값을 할당하는 것으로 이루어집니다.

1.2.1. 기본 할당

x = 10
name = "Alice"
is_active = True

1.2.2. 다중 할당

한 줄에서 여러 변수를 동시에 초기화할 수 있습니다.

a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3

# 같은 값 할당
x = y = z = 42
print(x, y, z) # 42 42 42

 

1.3. 변수의 데이터 타입

Python은 다양한 데이터 타입을 지원하며, 변수에 값을 할당하면 자동으로 타입이 결정됩니다.

기본 데이터 타입

타입
설명
예제
int
정수
x = 10
float
실수
y = 3.14
str
문자열
name = "Alice"
bool
불리언(True/False)
is_active = True
list
List(배열)
items = [1, 2, 3]
tuple
변경 불가능한 리스트
coords = (1, 2)
dict
Key-Value 쌍
info = {"age": 30}
set
중복 없는 집합
unique = {1, 2, 3}

List , Tuple , Dictionary , Set에 대해서는 추후에 다른 강좌로 알아보도록 하겠습니다.

x = 10 # int
y = 3.14 # float
name = "Python" # str
is_valid = True # bool
numbers = [1, 2, 3] # list

 

1.4. 변수의 범위(Scope)

변수의 범위는 변수가 어디에서 접근 가능한지를 결정합니다.

1.4.1. 전역 변수 (Global Variables)

함수 외부에서 선언되며, 모든 함수에서 접근 가능합니다.

x = 10 # 전역 변수

def print_x():
    print(x)

print_x() # 10

1.4.2. 지역 변수 (Local Variables)

함수 내부에서 선언되며, 함수 내부에서만 접근 가능합니다.

def my_function():
    y = 20 # 지역 변수
    print(y)

my_function() # 20
# print(y) # 오류 발생 (y는 함수 내부에서만 접근 가능)

1.4.3. global 키워드:

함수 내부에서 전역 변수를 수정하려면 global 키워드를 사용해야 합니다.

x = 10

def modify_global():
    global x
    x = 20

modify_global()
print(x) # 20

1.4.4. nonlocal 키워드

중첩 함수에서 바깥 함수의 변수를 수정하려면 nonlocal 키워드를 사용합니다.

def outer():
    a = 10
    def inner():
        nonlocal a
        a = 20
    inner()
    print(a)

outer() # 20

 

1.5. 변수의 메모리 관리

Python은 참조 카운팅(Reference Counting)을 통해 변수의 메모리를 관리합니다.

객체에 대한 참조가 없으면 가비지 컬렉터(Garbage Collector)가 자동으로 메모리를 해제합니다.

x = [1, 2, 3] # 리스트 객체 생성
y = x # y도 동일한 객체를 참조
del x # x 참조 삭제 (y는 여전히 참조 중)
print(y) # [1, 2, 3]

1.6. 상수와 변수

Python에서는 상수를 지원하지 않지만, 일반적으로 변수 이름을 대문자로 작성하여 상수처럼 사용합니다.

PI = 3.14159
GRAVITY = 9.8

 

1.7. 변수의 유용한 함수와 속성

1.7.1. type(): 변수의 데이터 타입 확인

print(type(10)) # <class 'int'>
print(type("Hello")) # <class 'str'>

1.7.2. id(): 변수의 메모리 주소 확인

x = 10
print(id(x)) # 메모리 주소 출력

1.7.3. isinstance(): 특정 데이터 타입인지 확인

x = 10
print(isinstance(x, int)) # True

1.8. 명시적 타입 캐스팅

변수는 다른 Type으로 변환(Casting)이 가능합니다. 아래는 각각의 기본 Data Type으로 변환하는 방법을 설명하고 있습니다.

1.8.1. 정수형으로 변환 ( int() )

문자열, 부동소수점, 또는 불리언 값을 정수로 변환합니다.

변환 가능한 문자열만 변환됩니다. 변환 불가능한 문자열은 오류를 발생시킵니다.

print(int(3.8)) # 3 (소수점 이하 버림)
print(int("42")) # 42 (문자열 -> 정수)
print(int(True)) # 1 (불리언 -> 정수)
# print(int("Hello")) # ValueError

1.8.2. 부동소수점형으로 변환 ( float() )

문자열이나 정수를 부동소수점으로 변환합니다.

print(float(10)) # 10.0
print(float("3.14")) # 3.14 (문자열 -> 부동소수점)

1.8.3. 문자열로 변환 ( str() )

어떤 타입이든 문자열로 변환합니다.

print(str(123)) # '123'
print(str(3.14)) # '3.14'
print(str(True)) # 'True'

1.8.4. 불리언으로 변환 ( bool() )

대부분의 값은 True로 변환되며, 0, None, 빈 컨테이너(빈 문자열, 빈 리스트 등)는 False로 변환됩니다.

print(bool(0)) # False
print(bool(42)) # True
print(bool("")) # False (빈 문자열)
print(bool("Hello")) # True

1.8.5. List로 변환 ( list() )

문자열, Tuple, Set 등을 List로 변환.

print(list("abc")) # ['a', 'b', 'c'] (문자열 -> List)
print(list((1, 2, 3))) # [1, 2, 3] (Tuple -> List)

1.8.6. 튜플로 변환 ( tuple() )

List나 문자열 등을 Tuple로 변환.

print(tuple("abc")) # ('a', 'b', 'c') (문자열 -> Tuple)
print(tuple([1, 2, 3])) # (1, 2, 3) (List -> Tuple)

1.8.7. 세트로 변환 ( set() )

List나 Tuple을 Set로 변환. 중복 요소가 제거됩니다.

print(set([1, 2, 2, 3])) # {1, 2, 3} (List -> Set)
print(set("hello")) # {'h', 'e', 'l', 'o'} (중복 문자 제거)

1.8.8. Dictionary로 변환 ( dict() )

Key-Value 쌍의 시퀀스를 Dictionary로 변환.

pairs = [("a", 1), ("b", 2), ("c", 3)]
print(dict(pairs)) # {'a': 1, 'b': 2, 'c': 3}

2. 예제

앞서 살펴본 내용을 바탕으로 몇가지 예제를 살펴보도록 하겠습니다.

 

Ex. 1. 삼성전자라는 변수로 50,000원을 바인딩해보세요.

삼성전자 주식 10주를 보유하고 있을 때 총 평가금액을 출력하세요.

삼성전자 = 50000
print("총평가금액" , 삼성전자 * 10)

출력:
총평가금액 500000

 

Ex. 2. 다음 표는 삼성전자의 일부 투자정보입니다.

변수를 사용해서 시가총액, 현재가, PER 등을 바인딩해보세요.

시가총액 = 298000000000000
현재가 = 50000
PER = 15.79
print(시가총액)
print(현재가)
print(PER)

출력:
298000000000000
50000
15.79

 

Ex. 3. 변수 s와 t에는 각각 문자열이 바인딩 되어있습니다. 

s = "hello"

t = "python"

두 변수를 이용하여 아래와 같이 출력해보세요.

hello! python

s = "hello"
t = "python"

print(s+"! "+t)

출력:
hello! python

문자열을 연결하는 방법으로 + 를 사용하면 됩니다.

Ex. 4. 아래 코드의 실행 결과를 예상해보세요.

2 + 2 * 3
print(2 + 2 * 3 )

출력:
8

 

Ex. 5. type() 함수는 데이터 타입을 판별합니다.

변수 a에는 128 숫자가 바인딩돼 있어 type 함수가 int (정수)형임을 알려줍니다.

a = 128

print(a,type(a))

아래 변수에 바인딩된 값의 타입을 판별해보세요.

a = "132"
a = "128"
print(a,type(a))

출력:
128 <class 'int'>

Ex. 6. 문자열 '720'를 정수형으로 변환해보세요.

num_str = "720"

num_str = "720"
num_int = int(num_str) # Type Casting
print(num_int+1, type(num_int))

출력:
721 <class 'int'>

 

Ex. 7. 정수 100을 문자열 '100'으로 변환해보세요.

num = 100
result = str(num)
print(result, type(result))

출력:
100 <class 'str'>

 

Ex. 8. 문자열 "15.79"를 실수(float) 타입으로 변환해보세요.

s = "15.79"
result = float(s)
print(result, type(result))

출력:
15.79 <class 'float'>

 

Ex. 9. year라는 변수가 문자열 타입의 연도를 바인딩하고 있습니다.

이를 정수로 변환한 후 최근 3년의 연도를 화면에 출력해보세요.

year = "2024"
year = int(year)
print(year-3 , year-2 , year-1)

출력:
2021 2022 2023

 

Ex. 10. 에이컨이 월 48,584원에 무이자 36개월의 조건으로 홈쇼핑에서 판매되고 있습니다.

총 금액은 계산한 후 이를 화면에 출력해보세요. (변수사용하기)

n = 48584
print(n * 36)

출력:
1749024

다른 강좌도 참고하시면 좋을 것 같습니다. 각 강좌의 Link는 아래를 참고하시기 바랍니다.

 

Python 강좌 01 - print()

 

Python 강좌 02 - 변수

 

Python 강좌 03 - 문자열

 

Python 강좌 04 - List

 

Python 강좌 05 - Tuple

 

Python 강좌 06 - Dictionary

 

Python 강좌 07 - 분기문

 

Python 강좌 08 - 반복문

 

Python 강좌 09 - 함수

 

Python 강좌 10 - Module

 

Python 강좌 11 - Class

 

Python 강좌 12 - File & Exception

728x90