Python 10 Function Parameters

김민호·2021년 9월 4일
0

Python

목록 보기
11/16
post-thumbnail

Parameter

1. Positional Arguments

  • 순서대로 값이 parameter로 전달

2. Keyword Arguments로 전달

def a(name, age):
    print(f"제 이름은 {name}이고, {age}살 입니다.")

a(age="30", name="김민호")
# 제 이름은 김민호이고, 30살 입니다.
  • 순서가 아닌 parameter 이름으로 값을 전달하기 때문에 실제 parameter의 순서가 바뀌어도 됨
  • 가독성 좋아짐

3. 혼용

  • 주의할 점 : Keyword Arguments는 순서 상관없지만 Positional Arguments는 순서 지켜줘야 함
def love_you(my_name, your_name): 
   print(f"{my_name} loves {your_name}") 
   
   love_you(your_name = "아이유", "정우성")
   # 이러면 순서가 틀렸기 때문에 오류

4. Default Value Parameter

  • 처음부터 파라미터로 받을 때 dafault값 정의 가능
  • 이 경우 함수 호출할 때 없어도 출력 가능
  • 다만 dafault값이 정의된 파라미터는 dafault값이 정의되지 않은 파라미터보다 먼저 위치해 있으면 syntax error!
def love_you(my_name, your_name="아이유"): 
   print(f"{my_name} loves {your_name}") 
   
love_you("정우성")
# 정우성 loves 아이유

생각해 볼 거리

  1. 함수를 정의 할때 default value parameter를 non-default value parameter 앞에 정의하면 안 되는 이유

  1. 위치 인수(positional arguments)와 가변 인수(variable length arguments)의 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력
def func_param_with_var_args(name, *args, age):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
 
func_param_with_var_args("정우성", "01012341234", "seoul", 20)

발생한 에러

TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'

  1. 가변 키워드 인수 (variable length keyword arguments)의 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력
def func_param_with_kwargs(name, age, **kwargs, address=0):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)
 
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")

  1. 위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments)의 위치를 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력
def mixed_params(name="아이유", *args, age, **kwargs, address):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)
 
mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
profile
개발자로서의 삶은 https://velog.io/@maxminos 에서 기록하고 있습니다 😀

0개의 댓글