본문 바로가기
공부/코딩

⛷ [파이썬] 파이썬 기초 정리 (13) : 매개변수 (argument)

by blackb1rd 2022. 11. 13.
728x90
반응형
728x170

 

 

 

파이썬 기초 정리

 

 

매개변수 (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블록이 실행됩니다. 

 

 

 

728x90
반응형
그리드형

댓글