Developer/Python

python : 변수

단님 2025. 3. 19. 22:47
728x90

자바를 하다가 파이썬의 공부를 시작하여 가볍게 작성한다.

변수

리터럴이란 값을 의미한다.
변수란, 한개의 변수에는 하나의 변할 수 있는 값을 지닌다.

- 네이밍 규칙
1. 변수명
-items_list [리스트일 경우 마지막 list를 표기해준다.]
-emp_dict [사전형의 경우 마지막 dict을 표기해준다.]
-df_table [데이터 프레임일 경우 df를 표기해준다.]
-data [짧고 의미있는 단어를 네이밍한다.]
-g_stock_count [전역변수일경우 맨 앞에 g를 붙여준다.]
-db_user
- 소문자 + 밑줄 문자를 통해 가독성을 높인다.
- 예약어를 사용할 수없다.

2. 함수명
- get_items_list [기능의 의미를 담아 표기하면 좋다.]
- 소문자 + 밑줄 문자를 통해 가독성을 높인다.

3. 모듈명 (파이썬에서는 파일을 모듈이라고 표현한다. .py파일을 의미한다) 및 폴더명
-함수명 규칙과 동일하나 최대한 짧은 소문자로 이름을 짓는다.
- 너무 일반적인 단어는 기존 파일명과 중복될 수 있기 때문에 지양하도록 한다. (ex ) test.py)

4. 클래스명
- MyClass
- StockCount
- 밑줄을 사용하지 않고 UpperCamelCase 를 사용한다.

5. 상수
- TOTAL
- URL
- 모두 대문자로 사용한다.
접근 제어자

접근 제어자는 클래스와 클래스 멤버들에 대해 선언할때 사용하는 제어자로 데이터의 은닉을 구현하기 위해, 데이터의 보호 차원으로 사용된다.
python에서는 다른 객체 지향 언어와 달리 실제로 접근을 막지 않는다.
멤버 이름 앞에 언더바(_)를 사용하여 접근 제어자 기능을 수행한다.

접근제어자의 종류
1. private : 외부에 공개 되지 않고 , 접근이 불가능하다.
     - '__'를 사용하여 접근을 금지한다.
     - 인스턴스를 생성하여 해당 변수를 접근하려고 하면 에러가 발생한다.
     - 다만 완전히 강제성은 있는 것이 아니라 어떻게든 변수를 찾으려고 하면 가능하다.
2. protected :상속된 경우에만 접근이 가능하다.
     - 실질적으로 접근을 python이 제어하지 않고, '_'를 사용하여 명시또는 경고하는 정도로 사용된다.
     - 강제성이 없기 때문에 public과 거의 동일하게 접근이 가능하다.
3. public : 일반적으로 사용하는 멤버들은 모두 public으로 어디서든 접근이 가능하다.

1. private

class Example:
    def __init__(self):
        self.__private_var = "비공개 변수"

    def __private_method(self):
        return "비공개 메서드 호출!"

obj = Example()
# print(obj.__private_var)  # ❌ AttributeError: 'Example' object has no attribute '__private_var'
# print(obj.__private_method())  # ❌ AttributeError: 'Example' object has no attribute '__private_method'

# ⚠️ 우회 접근 (이름 맹글링)
print(obj._Example__private_var)  # ✅ 가능하지만, 권장하지 않음

2. protected

class Example:
    def __init__(self):
        self._protected_var = "보호된 변수"

    def _protected_method(self):
        return "보호된 메서드 호출!"

obj = Example()
print(obj._protected_var)  # ⛔ 가능하지만 사용 권장 X
print(obj._protected_method())  # ⛔ 가능하지만 사용 권장 X

3. public

class Example:
    def __init__(self):
        self.public_var = "공개 변수"

    def public_method(self):
        return "공개 메서드 호출!"

obj = Example()
print(obj.public_var)   # ✅ 접근 가능
print(obj.public_method())  # ✅ 접근 가능

 

전역 변수

다른 언어들과 달리 전역변수를 지역에서 참조(읽기 전용으로의 사용)은 가능하지만 ,
값의 변경을 할 수 없다.

x = 10  # 전역 변수

def show_value():
    print(x)  # 함수 내부에서도 접근 가능

show_value()  # ✅ 출력: 10
x = 10

def modify_value():
    x = x + 5  # ❌ 함수 내부에서 직접 수정하려 하면 에러 발생
    print(x)

modify_value()

UnboundLocalError: local variable 'x' referenced before assignment 에러가 발생한다.
값을 변경을 하려고 하면 파이썬은 자동으로 지역변수로 간주하기 때문에 , 지역변수가 초기화되지 않은 채 참조되었기 때문이다.

x = 10  # 전역 변수

def modify_value():
    global x  # 🔥 전역 변수 선언
    x = x + 5  # 이제 변경 가능
    print(x)

modify_value()  # ✅ 출력: 15
print(x)  # ✅ 출력: 15 (전역 변수도 변경됨)


전역변수를 너무 많이 사용하여 남발하게되면, 코드가 그만큼 복잡해지고 유지보수측면에서 좋지 않을 수 있다.
따라서 변경가능한 dict / list 와 같은 타입을 사용하거나 , 클래스나 메서드를 이용하는 것이 좋을 수 있겠다.



'Developer > Python' 카테고리의 다른 글

python : 할당과 복사  (0) 2025.03.26
python : Iterator, Generator  (0) 2025.03.26
python : 상속 (inheritance)  (0) 2025.03.25
python : 자료형 . 기본 자료형 및 내장 자료형  (0) 2025.03.20