웹 프레임워크/Django

*args와 **kwargs

hong2943 2024. 3. 14. 09:40

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

'웹 프레임워크 > Django' 카테고리의 다른 글

가상 환경 설정  (0) 2024.03.14