파이썬에서 함수를 호출할 때, 인자(argument)를 전달하는 방법에는 두 가지가 있습니다. 위치인자(Positional Arguments)와 키워드 인자(Keyword Arguments)로 나뉩니다. 1. 위치 인자 (Positional Arguments) 위치 인자는 함수 호출 시 전달하는 인자가 함수 정의에서 매개변수(parameter)의 위치에 따라 매핑되는 방식입니다. 즉, 인자의 순서가 함수 정의에서 매개변수의 순서와 일치해야 합니다. 위치인자를 사용할 때는 인자의 값을 순서대로 전달합니다. 일반적으로 인자를 정의하는 방식입니다. 예 def greet(name, age): print(f"Hello, {name}. You are {age} years old.") 이 함수는 name과 age라는..
인스턴스 메서드, 클래스 메서드, 정적 메서드 차이점 인스턴스 메서드(Instance Methods): 이 메서드들은 클래스의 객체 인스턴스에서 호출되며, 첫 번째 인자로 인스턴스 자체(self)를 받습니다. 인스턴스 변수에 접근하여 값을 읽거나 수정할 수 있습니다. 클래스 메서드(Class Methods): 클래스 메서드는 클래스에서 호출되며, 첫 번째 인자로 클래스(cls)를 받습니다. 이 메서드들은 클래스 변수를 수정하는 데 사용될 수 있습니다. 인스턴스에 대한 정보는 사용할 수 없습니다. 정적 메서드(Static Methods): @staticmethod 데코레이터로 표시된 메서드는 인스턴스나 클래스에 대한 참조 없이 동작합니다. 이 메서드들은 클래스나 인스턴스 상태를 수정할 필요가 없는 경우에 ..
Python에서 @property 데코레이터는 메서드를 클래스의 속성처럼 접근할 수 있게 해줍니다. 이를 사용하면, 메서드를 호출하는 것처럼 보이지 않고 속성에 접근하는 것처럼 코드를 작성할 수 있습니다. 이러한 방식은 파이썬스러운(pythonic) 방식으로 디자인할 수 있도록 한다고 합니다. 예제 예를 들어, 다음과 같은 클래스를 정의합니다. class Circle: def __init__(self, radius): self._radius = radius @property def radius(self): return self._radius @property def diameter(self): return self._radius * 2 def area(self): return 3.14 * self._ra..
장고(Django)에서 순환 종속성(circular dependency)은 서로가 서로를 의존하는 모듈 또는 패키지 간의 관계를 말합니다. 이는 코드 구조에서 일반적으로 문제가 될 수 있는 상황입니다. 장고 프로젝트는 여러 개의 앱으로 구성될 수 있습니다. 각 앱은 모델, 뷰, 템플릿 등의 구성 요소를 포함하고 있습니다. 종종, 한 앱이 다른 앱의 모델이나 뷰를 참조해야 할 때 순환 종속성 문제가 발생할 수 있습니다. 예를 들어, 앱 A가 앱 B의 모델을 참조하고 앱 B가 앱 A의 모델을 참조한다고 가정해 봅시다. 이 경우, 앱 A를 실행하려면 앱 B의 모델이 필요하고 앱 B를 실행하려면 앱 A의 모델이 필요합니다. 따라서 어느 앱을 먼저 로드해야 할지 결정할 수 없습니다. 이는 순환 종속성이 발생한 상..
reverse와 reverse_lazy 차이 reverse reverse 메소드는 주어진 뷰에 대한 URL을 생성하는데 사용됩니다. 이 메서드는 URL 패턴의 이름과 뷰에 전달해야하는 인수를 받고 URL을 나타내는 문자열을 반환합니다. 이 함수는 호출되는 즉시 평가(evaluated)됩니다. 즉, URL을 즉시 생성합니다. reverse는 즉시 평가되기 때문에 아직 로드되지 않을 수 있는 URL 구성(configurations)(예: Django의 URL 구성에 의존하는 클래스 기반 뷰의 속성을 정의할 때)에는 사용해서는 안됩니다. reverse_lazy 반면에 reverse_lazy는 reverse와 동일한 작업을 수행하지만 더 느립니다. 즉, 명시적으로 액세스(explicitly accessed)할 ..
glob.glob() 함수는 파라미터로 받은 패턴과 이름이 일치하는 모든 파일과 디렉터리를 리스트로 반환합니다. import glob glob.glob(pattern) 파라미터인 pattern에는 아래와 같은 특수문자가 포함될 수 있습니다. * : 0개 이상의 임의 개수의 문자와 일치합니다. 그래서 glob.glob(*) 이 경우는 모든 파일과 디렉터리를 볼 수 있습니다. ? : 정확히 하나의 문자와 일치합니다. [] : 괄호 안의 단일 문자와 일치합니다. [!] 또는 [^] : 대괄호 안에 없는 단일 문자와 일치합니다. {} : 중괄호 안의 쉼표로 구분된 패턴과 일치합니다. . : 리터럴 점(.)과 일치합니다. 예시 import glob # 1) 현재 디렉터리에 있는 모든 파일과 디렉터리 files =..