매개변수 (argument)
1) 위치형 매개변수 (positional argument)
예시1)
def describe_pet(animal_type, pet_name): #1
"""print about my pet"""
print(f"\nI have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet('hamster', 'harry') #2
결과 값
I have a hamster.
My hamster's name is Harry.
#1의 함수정의는 이 함수에 반려동물의 종류와 이름이 필요함을 나타냅니다.
#2에서 처럼 할당 될 값을 순서대로 제공해야 결과 같이 위의 예시와 같이 출력 됩니다.
좀 더 복잡한 위치형 매개변수는 다음 예시와 같이 작성할 수 있습니다. 위와 다른 점은 animal_type과 pet_name에 'dog'와 'will' 이 추가 된 것입니다.
예시2)
def describe_pet(animal_type, pet_name): #1
"""print about my pet"""
print(f"\nI have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet('hamster', 'harry') #2
describe_pet('dog', 'will')
결과 값
I have a hamster.
My hamster's name is Harry.
I have a dog.
My dog's name is Will.
2) 키워드 매개변수 (keyword argument)
키워드 매개변수의 경우는 순서를 걱정할 필요가 없습니다.
예시3)
def describe_pet(animal_type, pet_name): #1
"""print about my pet"""
print(f"\nI have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='harry', animal_type='hamster')
결과 값
I have a hamster.
My hamster's name is Harry.
I have a hamster.
My hamster's name is Harry.
3) 매개변수의 기본 값 (Default value)
파이썬에서 함수를 호출할 대 매개변수를 넘기면 파이썬은 그 값을 사용합니다. 그렇지 않을 경우 매개변수의 기본값을 사용합니다. 따라서 매개변수의 기본값을 정의해두면 함수를 호출할 때 해당하는 매개변수는 생략해도 됩니다.
예시4)
def describe_pet(pet_name, animal_type='dog'): #1
"""print about my pet"""
print(f"\nI have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet(pet_name='will')
describe_pet(pet_name='harry', animal_type='hamster')
결과 값
I have a dog.
My dog's name is Will.
I have a hamster.
My hamster's name is Harry.
위의 예시에서 기본값을 정했으니 동물 종류를 매개변수로 반드시 써야하는 것은 아닙니다. 때문에 필수 매개변수는 #1에서 볼 수 있는 것 처럼 반려동물 이름 하나 (dog)만 남았습니다. 파이썬은 여전히 넘겨받은 값을 위치형 매개변수로 해석하기 때문에 함수에 반려동물 이름을 하나만 넘길 경우 그 값은 함수 정의의 첫 번째 매개변수와 연결 됩니다. 따라서 첫번째 매개변수는 pet_name이어야 합니다.
4) 동등한 함수 호출하는 법
위치형 매개변수와 키워드 매개변수, 기본값은 모두 함께 쓸 수 있으므로 함수 하나를 여러가지 방법으로 호출할 수 있을 때가 많습니다.
아래 예시는 기본값을 하나 쓴 다음 함수 describe_pet()을 확인해 보는 것입니다.
def describe_pet(pet_name, animal_type='dog'):
위의 정의에서 pet_name 매개변수에 항상 값을 제공해야 합니다. 또한 위치형 매개변수인지 또는 키워드 매개변수인지는 상관이 없습니다. 반려동물이 만약 개(dog)가 아닐 경우 animal_type에도 반드시 새로운 값을 제공해야 하며 역시 위치형 매개변수인지 또는 키워드 매개변수인지는 상관이 없습니다. 위의 함수는 다음과 같은 방법으로 호출이 가능합니다.
예시5)
def describe_pet(pet_name, animal_type='dog'):
describe_pet('will')
describe_pet(pet_name='will')
describe_pet('harry', 'hamster')
describe_pet(pet_name='harry', animal_type='hamster')
describe_pet(animal_type='hamster', pet_name='harry')
결과 값
I have a dog.
My dog's name is Will.
I have a dog.
My dog's name is Will.
I have a hamster.
My hamster's name is Harry.
I have a hamster.
My hamster's name is Harry.
I have a hamster.
My hamster's name is Harry.
5) 반환값 (Return value)
함수가 항상 결과를 직접 출력하는 것은 아닙니다. 때문에 출력하는 대신에 데이터를 처리하고 그 값을 반환할 수 있습니다. return문은 함수 내부에서 그 값을 받고 함수를 호출한 행에 그 값을 반환하는 역할을 합니다. 반환값을 쓰게되면 프로그램에서 하는 일 대부분을 함수에 넣어 프로그램 본문을 단순화 할 수 있습니다.
- 단순한 값 반환하는 법
예시6)
def get_formatted_name(first_name, last_name): #!
"""return all name"""
full_name = f"{first_name} {last_name}" #2
return full_name.title() #3
musician = get_formatted_name('john', 'mayer') #4
print(musician)
결과 값
John Mayer
- 매개변수를 옵션으로 만드는 법
get_formatted_name()이 중간 이름도 처리할 수 있게 만드는 예시입니다.
예시7)
def get_formatted_name(first_name, middle_name, last_name):
"""return all name"""
full_name = f"{first_name} {middle_name} {last_name}"
return full_name.title()
musician = get_formatted_name('john', 'paul', 'mayer') #4
print(musician)
결과 값
John Paul Mayer
예시7은 중간 이름이 필수로 적용 된 것이고 아래 예시8은 중간이름이 옵션으로 적용된 것입니다.
예시8)
def get_formatted_name(first_name, last_name, middle_name=''): #1
"""return all name"""
if middle_name: #2
full_name = f"{first_name} {middle_name} {last_name}"
else: #3
full_name = f"{first_name} {last_name}"
return full_name.title()
musician = get_formatted_name('john', 'mayer')
print(musician)
musician = get_formatted_name('john', 'paul', 'mayer') #4
print(musician)
결과 값
John Mayer
John Paul Mayer
#1는 중간이름이 옵션이기 때문에 함수 정의에서 마지막에 쓰고 기본값으로 빈 문자열을 지정합니다.
파이썬은 비어 있지 않은 문자열을 true로 해석하기 때문에 #2에서 함수를 호출할 때 중간 이름이 매개변수로 제공됐다면 if middle_name은 true로 평가 됩니다.
중간 이름이 제공 됐다면 성과 중간 이름, 이름을 결합해서 전체이름을 만듭니다.
중간 이름이 제공되지 않았다면 빈 문자열은 if 테스트를 통과하지 못하므로 #3인 else블록이 실행됩니다.
'공부 > 코딩' 카테고리의 다른 글
⛷ [파이썬] 파이썬(Python) 독학 사이트 추천 모음 (0) | 2023.03.31 |
---|---|
⛷ [파이썬] 파이썬 기초 정리 (14) : 딕셔너리 _ 3 (0) | 2022.11.15 |
⛷ [파이썬] 파이썬 기초 정리 (12) : 딕셔너리 _ 2 (1) | 2022.11.12 |
⛷ [파이썬] 파이썬 예제 문제모음 : 리스트 내포 (List Comprehension) (0) | 2022.11.11 |
⛷ [파이썬] 파이썬 기초 정리 (11) : 딕셔너리 (0) | 2022.11.10 |
댓글