이번 강좌는 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
'Development Tip' 카테고리의 다른 글
Python 강좌 04 - List (0) | 2024.12.23 |
---|---|
Python 강좌 03 - 문자열 (0) | 2024.12.23 |
Python 강좌 01 - print() (0) | 2024.12.22 |
C# - Application에 DLL을 포함시키는 방법 (0) | 2024.12.22 |
RuntimeError: Unexpected error from cudaGetDeviceCount() (0) | 2024.09.21 |