Python의 vars()와 ** 연산자: 객체 속성 다루기의 효율적인 방법

2024. 12. 30. 08:33·프로그래밍/모르는 코드 정리

Python에서 `vars()`와 `**` 구문은 객체의 속성을 다루고 함수에 전달하는 데 매우 유용한 도구입니다. 이 둘의 개념과 활용법을 자세히 살펴보겠습니다.

먼저 `vars()` 함수부터 이해해보겠습니다. 이 함수는 객체가 가진 모든 변수를 딕셔너리 형태로 보여줍니다. 마치 서랍장에 있는 물건들의 목록을 보는 것과 비슷합니다. 예를 들어:

class Person:
    def __init__(self):
        self.name = "John"
        self.age = 25
        self.city = "Seoul"

person = Person()
print(vars(person))  # {'name': 'John', 'age': 25, 'city': 'Seoul'}



다음으로 `**` 연산자를 살펴보겠습니다. 이 연산자는 딕셔너리의 내용을 함수의 매개변수로 풀어서 전달합니다. 마치 봉투에 담긴 여러 편지를 각각의 받는 사람에게 전달하는 것과 같습니다:

def introduce(name, age, city):
    print(f"{name}은 {age}살이고 {city}에 살고 있습니다.")

info = {'name': 'John', 'age': 25, 'city': 'Seoul'}
introduce(**info)  # "John은 25살이고 Seoul에 살고 있습니다." 출력



이제 `vars()`와 `**`를 함께 사용하면 어떤 장점이 있는지 알아보겠습니다. 이 둘을 조합하면 객체의 모든 속성을 함수에 깔끔하게 전달할 수 있습니다:

 

class Student:
    def __init__(self):
        self.name = "Jane"
        self.grade = "A"
        self.subject = "Math"

def print_report(name, grade, subject):
    print(f"학생 {name}은 {subject} 과목에서 {grade} 학점을 받았습니다.")

student = Student()

# 방법 1: 각각의 속성을 일일이 전달
print_report(name=student.name, grade=student.grade, subject=student.subject)

# 방법 2: vars()와 ** 사용하여 간단히 전달
print_report(**vars(student))



이러한 방식은 특히 많은 속성을 가진 객체를 다룰 때 코드를 훨씬 간결하고 관리하기 쉽게 만들어줍니다. 또한 객체의 속성이 추가되거나 변경되어도 함수 호출 부분을 수정할 필요가 없다는 장점이 있습니다. 단, 함수의 매개변수 이름과 객체의 속성 이름이 정확히 일치해야 한다는 점을 주의해야 합니다.

저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 > 모르는 코드 정리' 카테고리의 다른 글

Python을 활용한 TCP 소켓 통신의 이해와 구현  (0) 2025.03.12
Matplotlib에서 한글 폰트 깨짐 문제 해결하기  (0) 2025.03.05
'프로그래밍/모르는 코드 정리' 카테고리의 다른 글
  • Python을 활용한 TCP 소켓 통신의 이해와 구현
  • Matplotlib에서 한글 폰트 깨짐 문제 해결하기
인공지능수학공부방
인공지능수학공부방
경제, 문화, 과학, IT
  • 인공지능수학공부방
    JIN의 스토리
    인공지능수학공부방
  • 전체
    오늘
    어제
    • 스토리 (17)
      • 인공지능 글 (1)
      • 독서 (6)
      • 인공지능 공부 (6)
        • 수학 및 통계 (3)
        • 모델 (3)
      • 인공지능 논문 (0)
        • Object detection (0)
      • 기타 (0)
      • 프로그래밍 (4)
        • 기타 (1)
        • 모르는 코드 정리 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    마케팅
    피터 드러커
    파울로 코엘료
    연금술사
    캐딜락
    매니지먼트
    경영
    사업은 무엇인가
    피터드러커
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
인공지능수학공부방
Python의 vars()와 ** 연산자: 객체 속성 다루기의 효율적인 방법
상단으로

티스토리툴바