Python
Python / 24.02.28
JHDeveloper
2024. 2. 28. 13:28
# 정적 변수
# - 클래스 내에서 클래스 전체에 걸쳐 공유되는 변수
# - 모든 인스턴스에서 공통으로 사용
# => 하나의 인스턴스에서 해당 변수를 변경하면 다른 모든 인스턴스에서도 변경된 값 볼 수 있음
# 지역 변수, 전역 변수 차이 (변수의 범위(scope)), 인스턴스 변수
#1. 지역 변수
# - 함수 내에서 정의되거나 할당된 변수
# - 함수 내에서만 접근 가능
# - 함수가 호출될 때 생성되고, 함수의 실행이 종료될 때 파괴
# - 함수 내에서만 사용되는 데이터를 저장하는 데 유용
def example_function():
# 함수 내에서 정의된 지역변수
local_var = "This is a local variable"
example_function()
print(local_var)
# 함수 외부에서는 접근할 수 없음
# print(local_var) # 오류 발생: NameError: name 'local_var' is not defined
#2. 전역 변수
# - 모든 함수 외부에서 정의된 변수
# - 프로그램 전체에서 접근 가능
# - 프로그램이 실행될 때 생성되고, 프로그램이 종료될 때까지 유지
# - 프로그램 내 여러 함수에서 공유되는 데이터를 저장하는 데 유용
global_var = "This is a global variable"
def example_function():
# 전역변수를 함수 내부에서 사용
print(global_var)
example_function() # 출력: This is a global variable
print(global_var) # 출력: This is a global variable
#* 함수 내부에서 global 키워드를 사용하여 수정 가능
# 그러나 전역변수를 함수 내부에서 수정하는 것은 코드를 이해하기 어렵게 만들 수 있으므로
# 피하는 것이 좋음. (함수가 많아지고 코드가 커질수록 변수의 범위를 추적하기 어려워져서)
# => 지역변수를 사용하여 함수 간 의존성을 최소화하는 것이 권장
#3. 인스턴스 변수(Instance Variables)
# - 클래스의 각 인스턴스마다 고유한 데이터를 저장하는 데 사용되는 변수
# - 클래스로부터 생성된 각 객체(instance)마다 서로 다른 값을 가질 수 있음
# - 클래스의 메서드 내부나 클래스의 생성자(constructor)에서 self 키워드를 사용하여 정의
# - self = 현재 인스턴스
class Car:
def __init__(self, brand, model):
# 인스턴스 변수 정의
self.brand = brand
self.model = model
def display_info(self):
# 인스턴스 변수에 접근하여 정보 출력
print("Brand:", self.brand)
print("Model:", self.model)
# Car 클래스의 인스턴스 생성
car1 = Car("Toyota", "Camry")
car2 = Car("Tesla", "Model S")
# 각 인스턴스의 정보 출력
car1.display_info()
car2.display_info()
variation = 1
def change_variation():
print(variation)
variation = 2 #전역변수와 이름이 같게 할 수 없음
global variation
variation = 2
print(variation)
change_variation()
print(variation)
# 그냥 호출 시에는 전역 변수를 바로 사용해도 되지만, 변경을 하려면
# 함수 내에서 global 변수이름 이렇게 먼저 선언하고 변경해야 함.
# 파이썬에서는 전역변수와 지역변수의 이름이 같으면 오류가 발생
느낀점
1) 예전에 그렇게 배웠던 개념인데 아직도 헷갈리더라....
2) 애들한테 가르쳐주는데 코드가 작성 안되서 엄청 당황했음...
3) 하지만 침착하게 극복....