파이썬 - 키워드 전용 인수

안녕하세요, 사랑하는 학생들! 파이썬 프로그래밍의 흥미로운 세계로 여러분을 환영합니다. 오늘은 처음에는 조금 두려울 수 있지만, 정말 재미있고 매우 유용하다는 걸 보여드릴 것을 약속합니다. 우리는 키워드 전용 인수에 대해 이야기하겠습니다!

Python - Keyword-Only Arguments

키워드 전용 인수란 무엇인가요?

피자를 주문하는 것을 상상해보세요. 라지 사이즈를 원하는 것은 알지만, 토핑에 대해 아직 확실하지 않습니다. "라지 피자 하나"라고만 말하고 다른 것을 지정하지 않고 싶지 않나요? 이것과 비슷하게 파이썬에서 키워드 전용 인수는 동작합니다!

키워드 전용 인수는 위치에 의해는 아니라 키워드로만 전달할 수 있는 특별한 함수 매개변수입니다. 이는 파이썬 3에서 도입되었으며, 프로그래머가 함수 호출 방식에 대한 통제를 더하고, 함수 호출을 더 명확하고 오류를 줄이도록 만들기 위해 사용됩니다.

점점 살펴보겠습니다:

기본 함수 인수

키워드 전용 인수에 빠지기 전에, 일반 함수 인수가 어떻게 동작하는지 빠르게 살펴보겠습니다:

def greet(name, message):
print(f"{message}, {name}!")

greet("Alice", "Hello")  # 출력: Hello, Alice!
greet("Good morning", "Bob")  # 출력: Bob, Good morning!

이 예제에서는 인수의 순서가 중요합니다. 그들을 전환하면 출력이 변경되고, 의미를 전하지 못할 수 있습니다.

키워드 전용 인수 소개

이제 키워드 전용 인수가 어떻게 도움이 될 수 있는지 보겠습니다:

def greet(*, name, message):
print(f"{message}, {name}!")

greet(name="Alice", message="Hello")  # 출력: Hello, Alice!
greet(message="Good morning", name="Bob")  # 출력: Good morning, Bob!

매개변수 앞의 *를 발견했나요? 이 마법의 기호는 이후 모든 인수를 키워드 전용으로 만듭니다. 이제 함수를 호출할 때 매개변수 이름을 지정해야 하지만, 순서는 더 이상 중요하지 않습니다!

키워드 전용 인수 예제

더 praktische 예제를 살펴보겠습니다. 사각형의 면적을 계산하는 함수를 작성한다고 가정해봅시다:

def calculate_area(*, length, width):
return length * width

# 이렇게도 됩니다:
area = calculate_area(length=10, width=5)
print(f"The area is: {area}")  # 출력: The area is: 50

# 이렇게도 됩니다:
area = calculate_area(width=5, length=10)
print(f"The area is: {area}")  # 출력: The area is: 50

# 하지만 이렇게 하면 에러가 발생합니다:
# area = calculate_area(10, 5)  # TypeError: calculate_area() takes 0 positional arguments but 2 were given

이 예제에서는 lengthwidth를 이름으로 지정해야 합니다. 이는 함수가 많은 매개변수를 가질 때 코드가 더 가독성 있고 오류가 적く 것을 보장합니다.

예제: "sep"를 비키워드 인수로 사용

이제 내장된 파이썬 함수 중에서 위치와 키워드 전용 인수를 모두 사용하는 print() 함수를 살펴보겠습니다.

print("Hello", "World", sep="-")  # 출력: Hello-World

여기서 "Hello""World"는 위치 인수이고, sep는 키워드 인수입니다. 하지만 sep는 키워드 전용이 아닙니다; 우리는 그것을 위치 인수로도 사용할 수 있습니다:

print("Hello", "World", "-")  # 출력: Hello-World

하지만 이것은 혼란을 유발할 수 있습니다. 이러한 이유로 파이썬은 우리가 키워드 전용 인수로 정의할 수 있게 해줍니다, 특정 매개변수는 항상 이름으로 지정되어야 한다는 것을 보장합니다.

사용자 정의 메서드에서 키워드 전용 인수 사용

키워드 전용 인수의 힘을 보여주기 위해 더 복잡한 예제를 만들어보겠습니다:

def format_name(*, first, last, middle="", title=""):
if middle:
full_name = f"{first} {middle} {last}"
else:
full_name = f"{first} {last}"

if title:
return f"{title} {full_name}"
else:
return full_name

# 다양한 조합을 시도해보겠습니다:
print(format_name(first="John", last="Doe"))
# 출력: John Doe

print(format_name(first="Jane", last="Smith", title="Dr."))
# 출력: Dr. Jane Smith

print(format_name(first="Alice", middle="Marie", last="Johnson", title="Ms."))
# 출력: Ms. Alice Marie Johnson

# 이것은 에러를 발생시킵니다:
# print(format_name("Bob", "Brown"))  # TypeError: format_name() takes 0 positional arguments but 2 were given

이 예제에서는 firstlast는 필수 키워드 전용 인수이고, middletitle은 선택적 키워드 전용 인수로 기본값이 있습니다. 이 함수는 매우 유연하고 사용법이 명확합니다.

키워드 전용 인수 메서드 요약

다음은 우리가 논의한 메서드를 요약한 표입니다:

메서드 설명 예제
greet(*, name, message) 기본 인사 함수로 키워드 전용 인수 greet(name="Alice", message="Hello")
calculate_area(*, length, width) 사각형 면적을 계산하는 함수로 키워드 전용 인수 calculate_area(length=10, width=5)
format_name(*, first, last, middle="", title="") 선택적 중간 이름과 제목을 포함한 이름 포맷 함수 format_name(first="John", last="Doe", title="Mr.")

기억해주세요, 함수 정의에서 *는 이후 인수가 키워드 전용으로 만드는 것입니다!

결론

키워드 전용 인수는 파이썬에서 코드를 더 가독성 있고, 오류를 줄이고, 더 유연하게 만드는 강력한 기능입니다. 이는 매개변수가 많은 함수를 작성하거나 인수의 순서가 혼란스러울 때 특히 유용합니다.

파이썬 여행을 계속하면서, 키워드 전용 인수가 매우 유용할 수 있는 많은 상황을 발견하게 될 것입니다. 연습하고 탐구하며, 가장 중요한 것은 파이썬을 즐기세요!

기억해주세요, 모든 위대한 프로그래머는 초보자로 시작했습니다. 인내와 연습으로, 얼마 안 지나면 복잡한 파이썬 프로그램을 작성할 준비가 되었을 것입니다. 코딩을 즐기세요, 미래의 파이썬 마스터들!

Credits: Image by storyset