편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2023.06.05

    파이썬 *args, **kwargs 관련 질문


    def custum_print(value, *args, **kwargs):
        print(value, *args, **kwargs)
    
    custum_print(1, 2, 3, sep=':', end=' ')`
    

    위 코드에서 print()안에 *args, **kwargs에는 통 *을 붙이지 않는게 올바르다고 하는데요. 그런데 저렇게 코드를 쓰게 되면 어떻게 동작하는건지 이해가 잘 안갑니다. 일단 위코드 출력값은 1:2:3입니다.

    1은 value, 2,3은 args,이렇게 인식하는건지, 그렇다면 sep=':' end=' '는 딕셔너리로 인식해야 할 것 같은데 그건 아니게 출력되고, 그렇다고 * 붙일 때 인식안한다고 하면 1:2:3이렇게 출력되는 것도 신기합니다.

    참고로..

    def custum_print(value, *args, **kwargs):
        print(value, args, kwargs)
    
    custum_print(1, 2, 3, sep=':', end='')
    

    * 를 떼니 1 (2,3) {sep : ':' , end :} 이런식으로 나왔습니다.

    지엽적인 질문이지만 어떻게 돌아가는 건지 궁금해서요.

  • 프로필 장민정님의 편집
    날짜2023.06.04

    파이썬.. 질문드려봅니다~


    `def custum_print(value, *args, **kwargs):
        print(value, *args, **kwargs)
    
    custum_print(1, 2, 3, sep=':', end=' ')`
    

    위 코드에서 print()안에 args,*kwargs에는 통상 *을 붙이지 않는게 올바르다고 하는데요~ 그런데 저렇게 코드를 쓰게 되면,, 어떻게 동작하는건지 이해가 잘 안가서요 ㅠ ㅠ 일단 위코드 출력값은 1:2:3입니다.

    1은 value, 2,3은 args,이렇게 인식하는건지 ,,, 그러면 sep=':' end=' '는 딕셔너리로 인식해야 할 것 같은데 그건 아니게 출력되고..그렇다고 * 붙일 때 인식안한다고 하면 1:2:3이렇게 출력되는 것도 신기해서..

    참고로..

    def custum_print(value, *args, **kwargs):
        print(value, args, kwargs)
    
    custum_print(1, 2, 3, sep=':', end='')
    

    는 * 를 떼니,, 1 (2,3) {sep : ':' , end :}뭐 이런식으로 나왔습니다..ㅎㅎㅎ

    지엽적인 질문이지만,, 어떻게 돌아가는 건지 궁금해서요..