Django에서 _args 와 *_kwargs는 주로 URLconf에서 보낸 위치 인자와 키워드 인자를 view 메소드로 전달하는데 활용
*args
1. *args는 함수에 임의의 개수의 위치 기반 인수를 전달할 수 있게 한다.
2. 튜플 형태로 전달된다.
사용 예시
def sum_all(*args):
total = 0
for num in args:
total += num
return total
print(sum_all(1, 2, 3, 4)) # 출력: 10
print(sum_all(10, 20, 30)) # 출력: 60
**kwargs
1. **kwargs는 함수에 임의의 개수의 키워드 인수를 전달할 수 있게한다.
2. 딕셔너리 형태로 전달된다.
사용 예시
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="John", age=30, city="New York")
# 출력:
# name: John
# age: 30
# city: New York
위치 기반 인수와 키워드 인수
위치 기반 인수
1. 함수 호출 시 인수의 위치에 따라 매핑되는 인수
2. 매소드를 오버라이딩하거나 래핑하는 경우 유용하게 사용할 수 있다.
키워드 인수
1. 키워드 인수는 함수 호출 시 인수를 매개변수 이름과 함께 전달하는 방식
2. 함수 호출 시에 매개변수 이름을 명시하여 인수를 전달
3. 위치에 상관없이 인수를 전달할 수 있다.
django에서 사용 예시
from django.db import models
class MyModel(models.Model):
my_field = models.CharField(max_length=100)
def save(self, *args, **kwargs):
self.my_field = self.my_field.upper() # 대문자로 변환
super().save(*args, **kwargs) # save() 메서드 오버라이드
class PostDetail(DetailView):
model = Post
#태그 List를 가져오는 함수
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['tags'] = Tag.objects.all()
return contex