ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Function Parameter & Argument
    Python 2021. 12. 9. 11:30

    오늘 알아보고자 하는 것은 Function Parameter & Argument 입니다.

    우선 Parameter와 Argument가 어떤걸 의미하는지부터 알아보겠습니다.

    그리고 여러 예시를 통해서 설명해드리겠습니다.

     

    * Parameter

     - 매개변수

     - 함수가 받는 변수를 의미

     

    * Argument

     - 인자

     - 함수에 실제로 들어가는 input value

     

    * Positional Argument (기본값 또는 기본 형태)

     - 함수에서 정의한 위치대로 Parameter에 대입

    Positional Argument의 사용 예시

     

    * Keyword Argument (kwargs)

     - 순서 대신에 Parameter 이름에 값을 지정

     - 장점 : 프로그램의 안정성 UP! (변수명을 써서 변수 기입시 실수를 줄일 수 있습니다.)
                가동성 UP! (변수명을 보면 그 역할을 바로 알 수 있어서 가독성이 좋아집니다.)

     - Positional Argument, Kwargs 순서로 나열 (함께 사용시)

    순서는 항상 Positional Argument, Kwargs 순서로 나열하기!

     

    아래의 경우에는 왜 에러메세지가 뜨는지 아시겠나요??

    왜 그럴지 조금 생각해보신 후에 내려보시기를 추천드립니다.

    TypeError: multiple values for argument

     

    에러메세지를 보면 'menu'라는 인자에 값이 2개가 온다는 의미이다. (2 와 불고기)

    만약 menu와 day를 함수 호출시 default value argument로 하고자 한다면 (값 지정을 원할 경우)

    함수 호출 부분에서 아래처럼 non-default value argument, default value argument 순서로 써야합니다.

    def reserve(time, people, menu, day):
    	print(f"저희 {day}일 {time}시에 메뉴는 {menu}로 {people}명 예약할게요.")
    
    reserve(5, 10, day=25, menu="불고기")

     

    아래의 예들을 통해서 어떤 부분을 수정해야 할지 생각해보시기 바랍니다.

    함수 호출 부분에 default value argument가 non-default value argument보다 앞에 온 것이 잘못된 부분이다.

     

    함수 선언(생성) 부분에 default value argument가 non-default value argument보다 앞에 온 것이 잘못된 부분이다.

     

     

    1. 위치 인수(positional arguments)와 가변 인수(variable length arguments)의 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력하기!

    TypeError : 'age'에 keyword-only argument 입력이 필요합니다 라는 메세지입니다.
    해결 방법 : 함수 호출하는 부분에 age에 값 지정하여 해결!

     

     

    2. 가변 키워드 인수 (variable length keyword arguments)의 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력하기!

    SyntaxError : 문법상 오류 (힌트는 문법상 순서에 맞게 순서를 바꿔주시면 되는 것입니다.)
    Keyword-Only Arguments with Defaults 와 **kwargs 중에 뭐가 우선순위에 있어야 하는지 보시면 됩니다.

     

     

    3. 위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments)의 위치를 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력하기!

    SyntaxError : 문법상 오류 (힌트는 문법상 순서에 맞게 순서를 바꿔주시면 되는 것입니다.)
    Positional Argument - Default Argument - *args - Non-Default Keyword-Only Arguments - **kwargs 순서입니다.

     

     

    마지막으로 전체적인 순서를 쓰고 마무리하겠습니다.

     

    1. Positional Argument

    2. Default Argument(함수 선언할때 값 지정)

    3. *args

    4. Non-Default Keyword-Only Arguments 또는 Keyword-Only Arguments with Defaults

    5. **kwargs

     

    # Non-Default Keyword-Only Arguments : 합수 입력시에 default value 설정 X, Keyword를 입력받는 것.

     

    # Keyword-Only Arguments with Defaults : 합수 입력시에 default value 있지만 keyword도 입력받는 것.

     

     

     

    이해가 안 되서 고생하던 참에 아래의 블로그 글을 여러번 읽으면서 이해할 수 있었습니다!
    https://livetodaykono.tistory.com/19

     

    [Python 기초] *args와 **kwargs 사용과 순서

    이번 포스트에서는 python의 args와 kwargs의 역할과 문법(순서)를 알아보겠습니다. 포스트 항목은 다음과 같습니다. 1. 사용 문법 2. args 3. kwargs 4. 문법 파헤치기 - *args의 위치 5. 문법 파헤치기 - **kwa

    livetodaykono.tistory.com

     

    댓글

Designed by Tistory.