티스토리 뷰

반응형
수백 개의 전역 변수를 선언하고 관리하는 것은 코드 유지 보수와 관리 측면에서 효율적이지 않을 수 있습니다. 대신, 전역 변수를 관리하는 더 나은 방법으로는 다음과 같은 방법들이 있습니다:

딕셔너리 사용: 전역 변수를 딕셔너리에 저장하고, 필요한 경우 해당 딕셔너리에서 값을 가져오거나 설정합니다.
클래스 사용: 전역 상태를 관리하는 클래스를 만들고, 클래스 인스턴스를 통해 변수에 접근합니다.
이 두 가지 방법 모두 전역 변수의 수가 많을 때 더 깔끔하고 관리하기 쉬운 코드를 작성하는 데 도움이 됩니다.

1. 딕셔너리 사용

# 전역 변수 딕셔너리

파이썬 딕셔너리

선언
global_vars = {f'x{i}': 0 for i in range(1, 31)}
global_vars.update({f'y{i}': 0 for i in range(1, 31)})

def function1():
    global global_vars
    global_vars['x1'] = 10
    global_vars['y1'] = 20
    print(f"function1 - x1: {global_vars['x1']}, y1: {global_vars['y1']}")

def function2():
    global global_vars
    global_vars['x2'] = 30
    global_vars['y2'] = 40
    print(f"function2 - x2: {global_vars['x2']}, y2: {global_vars['y2']}")

# 함수 호출
function1()
function2()

# 변수 확인
print(f"Outside - x1: {global_vars['x1']}, y1: {global_vars['y1']}")
print(f"Outside - x2: {global_vars['x2']}, y2: {global_vars['y2']}")

# 전역 변수 딕셔너리 선언
global_vars = {f'x{i}': 0 for i in range(1, 31)}
global_vars.update({f'y{i}': 0 for i in range(1, 31)})

def function1():
    global global_vars
    global_vars['x1'] = 10
    global_vars['y1'] = 20
    print(f"function1 - x1: {global_vars['x1']}, y1: {global_vars['y1']}")

def function2():
    global global_vars
    global_vars['x2'] = 30
    global_vars['y2'] = 40
    print(f"function2 - x2: {global_vars['x2']}, y2: {global_vars['y2']}")

# 함수 호출
function1()
function2()

# 변수 확인
print(f"Outside - x1: {global_vars['x1']}, y1: {global_vars['y1']}")
print(f"Outside - x2: {global_vars['x2']}, y2: {global_vars['y2']}")

 

2. 클래스 사용

예시이니 이걸 이용하면 좋을 것 같아요. 

클래스이용.. 파이썬도 해보자구요.


class GlobalVars:
    def __init__(self):
        for i in range(1, 31):
            setattr(self, f'x{i}', 0)
            setattr(self, f'y{i}', 0)

global_vars = GlobalVars()

def function1():
    global global_vars
    global_vars.x1 = 10
    global_vars.y1 = 20
    print(f'function1 - x1: {global_vars.x1}, y1: {global_vars.y1}')

def function2():
    global global_vars
    global_vars.x2 = 30
    global_vars.y2 = 40
    print(f'function2 - x2: {global_vars.x2}, y2: {global_vars.y2}')

# 함수 호출
function1()
function2()

# 변수 확인
print(f'Outside - x1: {global_vars.x1}, y1: {global_vars.y1}')
print(f'Outside - x2: {global_vars.x2}, y2: {global_vars.y2}')

# 전역 변수 딕셔너리 선언
global_vars = {f'x{i}': 0 for i in range(1, 31)}
global_vars.update({f'y{i}': 0 for i in range(1, 31)})

def function1():
    global global_vars
    global_vars['x1'] = 10
    global_vars['y1'] = 20
    print(f"function1 - x1: {global_vars['x1']}, y1: {global_vars['y1']}")

def function2():
    global global_vars
    global_vars['x2'] = 30
    global_vars['y2'] = 40
    print(f"function2 - x2: {global_vars['x2']}, y2: {global_vars['y2']}")

# 함수 호출
function1()
function2()

# 변수 확인
print(f"Outside - x1: {global_vars['x1']}, y1: {global_vars['y1']}")
print(f"Outside - x2: {global_vars['x2']}, y2: {global_vars['y2']}")


이 두 가지 방법은 코드의 가독성과 관리성을 향상시키며, 전역 변수의 수가 많을 때 특히 유용합니다. 딕셔너리를 사용하면 키를 통해 동적으로 변수를 참조할 수 있고, 클래스를 사용하면 객체 지향적인 접근 방식으로 전역 상태를 관리할 수 있습니다.

반응형
댓글