본문 바로가기
PROGRAMING📚/Python📑

[Python]constant

Ta이니 2024. 11. 14.
728x90
반응형

Constant

파이썬에서는 일반적으로 "상수(constant)"라는 개념이 변수와는 조금 다르게 다루어집니다. 다른 언어들에서는 상수를 지정하여 값이 변하지 않도록 할 수 있지만, 파이썬은 기본적으로 변수를 변경 불가능하도록 강제하지는 않습니다.

하지만, 파이썬에서 상수를 나타내기 위해 관습적으로 다음과 같은 방법을 사용합니다:

  1. 대문자 표기: 상수로 사용하려는 변수 이름을 모두 대문자로 작성합니다. 예를 들어, PI = 3.14159와 같이 합니다. 대문자로 된 변수는 상수처럼 다뤄야 한다는 암묵적인 규칙이 있습니다.
  2. PI = 3.14159 GRAVITY = 9.81
  3. 명시적 _constant: 때때로 라이브러리나 모듈에서 _constant라는 이름을 붙여서 상수처럼 사용할 수 있습니다. 이는 주로 모듈 수준에서 상수처럼 사용되는 값임을 나타내기 위한 것입니다. 그러나, 이러한 명명 규칙도 역시 관습일 뿐, 실제로 값을 변경할 수 없는 것은 아닙니다.
  4. _CONSTANT_VALUE = "This is a constant"

파이썬에는 변수의 값을 변경할 수 없도록 강제하는 const 키워드가 존재하지 않으며, 위의 방법들은 모두 개발자가 상수로 간주하고 코딩하는 방법입니다.

주의사항: 개발자들이 이 관습을 따라 상수를 변경하지 않도록 해야 합니다. 예를 들어, PI = 3.14라고 선언했더라도, 실제로 코드 내에서 PI = 3.15로 변경할 수 있습니다. 그러나 이런 변경은 프로그램의 안정성에 영향을 미칠 수 있으므로, 상수는 변경하지 않는 것이 좋습니다.

임의로 const 기능 만들기

class _constant:
  def __setattr__(self, key, value):
    if key in self.__dict__:
      raise Exception("변수에 값을 할당할 수 없습니다.")
    self.__dict__[key] = value

  def __delattr__(self, item):
    if item in self.__dict__:
      raise  Exception("변수를 삭제할 수 없습니다.")

# python 의 sys객체에 _constant 클래스를 등록함으로 static 하게 사용 가능함
import sys
sys.modules[__name__] = _constant()
import common.constant as const
const.PI = 3.14
print(const.PI)

# 에러 발생 , 재할당 불가능
const.PI = 3.141592
print(const.PI)

# 아래 코드가 없는 경우, 덮어씌어짐
import sys
sys.modules[__name__] = _constant()
#--------------------------------------------
# PI = 3.14
import common.constant as const
const.PI = 3.14
print(const.PI)

# PI = 3.141592
const.PI = 3.141592
print(const.PI)

728x90
반응형

댓글