혼자 공부하는 파이썬 33강 - 매개변수 정리

Поделиться
HTML-код
  • Опубликовано: 24 сен 2024
  • 일반 매개변수, 가변 매개변수, 기본 매개변수, 키워드 매개변수를 모두 한꺼번에 다룹니다. 실질적으로 이거 완전히 외우실 필요 없고, 그냥 보고 “대충 이런 형태로 사용해야겠다”라고만 인식 하실 수 있으시면 됩니다.

Комментарии • 68

  • @ulsanlov
    @ulsanlov 3 года назад +1

    저도 아랫분들과 같이 매우 감사하게 생각합니다. 제가 여태 컴퓨터 관련 책을 끝까지 독파한 적이 없었는데 본 강의를 들으니 쉽게 진도가 나갑니다. 그 동안 컴퓨터 없이 눈으로 공부하다가 오늘부터 노트북으로 해봅니다. 전에는 컴퓨터로 같이 하다 보니 지쳐서 포기하였는데.. 이 강의를 눈으로 보다 보니 할 수 있겠다는 생각이 들었습니다. 특히 강의가 10분 내외로 짧아서 부담이 없습니다 저는 한번에 5개 정도 강의를 듣곤 했는데.. 이제 부터는 실습하면서 하고 있습니다. 매우 감사하게 생각합니다.

  • @너부-r8e
    @너부-r8e Год назад

    안경 쓰신건 지적으로 생기셨고, 안경 벗으신 건 잘생기셨네요..! 이거 구버전 다 듣고 새롭게 찍으신 신버전으로 복습하려구요 감사합니다.!!

  • @류상서
    @류상서 5 лет назад +1

    수고 하셨습니다.^^
    언제 따라가나 했는데
    벌써 여기까지 왔네요
    너무 쉽게 강의 해 주셔서
    이해 하기가 좋습니다.
    감사합니다.^^

  • @csh109521
    @csh109521 5 лет назад +1

    10년된 개발자인데도 파이썬을 모르니 배워야 하는군요. 너무 좋은 강의 감사합니다.

  • @highkick5315
    @highkick5315 4 года назад +2

    3번반복하고오겠습니다

  • @cho2ha
    @cho2ha 2 года назад

    뇌가 외우기를 거부할 뻔 했는데 지금까지 공부했으니 포기 않고 끝까지 가보겠습니다! 감사합니다!

  • @key8413
    @key8413 5 лет назад

    친절히 설명해 주신덕분에 독학으로 한달은 족히 걸릴 내용을 한주도 안되어 공부 하고 있습니다.
    감사합니다.

  • @SaRang_Sun
    @SaRang_Sun 4 года назад +1

    정말 편하게 들을 수 있는 강의 입니다.
    소리 조금 줄이고 이어폰으로 들으면 약간 ASMR? 느낌도 나고
    그럼에도 눈이 감기지 않는 이유는 고퀄의 자막 ex) 당당... 당당...
    저 역시 강의 들으면서도 이게 무슨소리야 나올 정도로 당최 이해가 안가네요 (당!당!)
    더불어 ASMR인데도 졸리지 않는 이유
    - 책을 보면 쓸데없는 얘기들이 많아서 지루할 수 있겠... 중략... 그래서 책을 꼬~옥 한번 읽어 보시기 바랍니다.
    쓸데 없지만 꼭 읽어보아라~ 프로그램 강의 인데도 가끔 어리 둥절하게 만드는 이야기등등
    여튼 강의 감사합니다. 아직 이것 저것 모두 둘러 보진 못했지만 후에라도
    따라 코딩하면서 조그만 프로그램 만들어가며 실전에 조금 더 가까운, 좀 더 많은 이야기 들려 주셨으면
    하는 바람 입니다
    - 감사합니다.

  • @유지태-l9s
    @유지태-l9s 4 года назад

    print 쓰면 자동 줄바꿈 되는게 기본 매개변수가 줄바꿈이어서 였구나! 개념팍팍잡힙니다.

  • @hyeonhoonlee4520
    @hyeonhoonlee4520 4 года назад +3

    2:36에서, 일반매개변수, 기본매개변수와 달리 가변매개변수는 소괄호()에 묶인채로 출력되는 이유는 무엇인가요?

    • @윤인성
      @윤인성  4 года назад +3

      여러 개의 자료형이 함께 묶여있는 튜플이기 때문입니다. 튜플은 강의 찍은지가 좀 되서 잘 기억이 안 나지만, 아마 곧 이어지는 강의에서 다룹니다.

    • @hyeonhoonlee4520
      @hyeonhoonlee4520 4 года назад

      @@윤인성 감사합니다:)

  • @갈가마구
    @갈가마구 2 года назад

    감사합니다.

  • @aaron-kim00
    @aaron-kim00 3 года назад

    감사합니다

  • @불티나-t4l
    @불티나-t4l 4 года назад

    명강의 감사합니다

  • @capriccio1121
    @capriccio1121 4 года назад +2

    p219의 param_example.py에서
    def test(a, b=10, c=100) :
    print(a+b+c)
    여기서,
    라인 5의 test(10,20,30)은 그 전까지의 설명에 의하면 이렇게 하면 안 되는 것 아닌지요?
    b와 c는 기본매개변수이므로 그 값을 바꾸려면 반드시 기본매개변수 이름을 지정해서 값을 입력해야 하지 않나 싶은데요.
    test(10, b=20, c=30)을 해봤는데
    실행결과가 똑같이 60으로 나옵니다.
    매개변수 이름을 지정해서 값을 입력하지 않아도 라인5처럼 결과는 마찬가지인 이유가 무엇인지요?

    • @윤인성
      @윤인성  4 года назад

      OKJH 기본 매개 변수는 그냥 그 위치에만 놓아주시면 들어갑니다.
      - 가변 매개변수와 기본 매개변수가 조합되어 있는 경우
      - 기본 매개 변수 입력해야 하는 것이 너무 많아서 그냥 내가 원하는 것만 바로 입력하고 싶은 경우
      에만 키워드 매개 변수 형태로 써주시면 됩니다.

    • @capriccio1121
      @capriccio1121 4 года назад

      @@윤인성 감사합니다.

    • @jaehyuckyeo5618
      @jaehyuckyeo5618 4 года назад

      @@윤인성 저도 똑같은 질문 하려고 했는데요 결국 test(10, 20,30) 과 test(10, b=20, c=30)과 값이 같네요 저는 처음에 test(10,20,30)은 일반매개변수 a에 값이 너무 많아서 오류가 생긴다고 생각했습니다

    • @싸우지맙세효
      @싸우지맙세효 2 года назад +1

      @@jaehyuckyeo5618 저도 똑같은 질문ㅋㅋㅋㅋㅋ 감사해요

    • @choi1923
      @choi1923 2 года назад

      @@윤인성 그러면 또 의아한 게 P.217에의 구문을 아래와 같이 일부 변형을 해봤습니다.
      def print_n_times(*values, n=2):
      for i in range(n):
      for value in values:
      print(value)
      print()
      print_n_times("안녕하세요", 3)
      ================================ 결과값=========================
      안녕하세요
      3
      안녕하세요
      3
      ====================================
      위와 같이 결과가 나오는데
      말씀해주신 것과 같이 '기본 매개 변수는 그 위치에 놓아주면 들어간다'고 한다면
      n=3이 되어서 최종적인 결과값은 아래와 같이 나와야 하는 거 아닌가요?
      안녕하세요
      안녕하세요
      안녕하세요

  • @bbossam_jjudy
    @bbossam_jjudy 3 года назад

    감사합니다. ^^

  • @Byeolubyeolu
    @Byeolubyeolu 4 года назад +1

    직접해보는 손코딩 219쪽 param_example.py에서 test(10,20,30) 일 때 왜 b랑 c 값에 20과 30이 들어가는지 알 수 있을까요?? 일반 매개변수 a에 10이 들어가고 b와 c는 위에 기본값으로 설정해놓은대로 10과 100이 들어가야 되는 거 아닌지 해서요!

    • @Byeolubyeolu
      @Byeolubyeolu 4 года назад

      일반 매개변수 뒤에 값은 저절로 기본 매개변수 값에 들어가는 건가요??

    • @윤인성
      @윤인성  4 года назад

      기본 매개변수에 값을 지정해버리시면, 그 값이 들어갑니다(입력 안 할 때 기본 매개변수 값이 들어갑니다).

  • @choi1923
    @choi1923 2 года назад

    P.217에의 구문을 아래와 같이 일부 변형을 해봤습니다.
    def print_n_times(*values, n=2):
    for i in range(n):
    for value in values:
    print(value)
    print()
    print_n_times("안녕하세요", 3)
    ================================ 결과값=========================
    안녕하세요
    3
    안녕하세요
    3
    ====================================
    댓글중에 '기본 매개 변수는 그 위치에 놓아주면 들어간다'고 한다면
    n=3이 되어서 최종적인 결과값은 아래와 같이 나와야 하는 거 아닌가요?
    안녕하세요
    안녕하세요
    안녕하세요
    아니면 '기본매개변수'와 '키워드 매개변수' 는 겉으로 볼 때는 같은 형태(A=00 형식)이나,
    엄연히 다른 특성(기본매개변수는 해당 위치에 값만 넣어도 들어가고, 키워드매개변수는 A=00의 형태로 입력해야만 들어감(?))의 매개변수로 판단하여
    1. 매개변수 자리에 '일반 매개변수' 또는 'A = 00 형태의 기본 매개변수'로만 구성된 경우에는 'A = 00'식의 형태를 '기본매개변수'로 생각해서,
    함수 호출 시 'A=PP'식으로 다른 위치에 입력하거나, 해당 매개변수 자리에 PP 값을 입력해도 A라는 매개변수는 PP의 값을 갖게 되는 것으로 이해하고
    2. 매개변수 자리에 '가변매개변수'와 'A = 00 형태의 기본 매개변수'로 구성된 경우는 'A = 00'식의 형태를 '키워드 매개변수'로 생각해서,
    함수 호출 시 'A=PP'식으로 위치와 상관없이 입력해야만 A라는 매개변수는 PP의 값을 같게 되는 것으로 이해하면 되는 것일까요?

    • @윤인성
      @윤인성  2 года назад

      가변 매개변수가 앞에 와버리면, 단순한 지정 방법[지금처럼 2를 그냥 놓는 방법]으로는 그 뒤에 매개변수 값을 전달할 수 없습니다[가변 매개변수의 것으로 취급됩니다].
      참고적으로 이런 함수를 지금 원하는 형태로 실행하고 싶으시면,
      print_n_times("안녕하세요", n=3)
      같은 형태로 실행해주셔야 합니다!
      [그래서 print("", "", "", end="")처럼 print 함수도 end를 키워드 매개변수로 집어 넣어주는 것입니다!]

  • @곽동욱-g1q
    @곽동욱-g1q 2 года назад

    책 219p에 여러함수 호출형태라는 칸에 기본형태에 10 20 30 이 들어가 기본매개변수의 값을 바꾸어 줬는데 2:22 에서 설명해주실때는 바뀌지 않는이유가 원래는 바껴야하는데 가변매개변수가 앞에서 가로막고 있기 때문에 그런가요?

    • @윤인성
      @윤인성  2 года назад

      넵! 그렇습니다!

  • @김홍철-x4y
    @김홍철-x4y 2 года назад

    def print_n_times(values, n=2):
    for i in range(n):
    for value in values:
    print(value)
    print()

    print_n_times("안녕하세요", "즐거운", "파이썬 프로그래밍", n=3)
    책에 있는 예제를 입력해보니...
    Traceback (most recent call last):
    File "c:\Users\Administrator\Desktop\Python\0609-02.py", line 7, in
    print_n_times("안녕하세요", "즐거운", "파이썬 프로그래밍", n=3)
    TypeError: print_n_times() got multiple values for argument 'n'
    라고 에러가 뜨는데, 이게 무슨 말일까요 ㅠㅠ

    • @윤인성
      @윤인성  2 года назад

      함수 선언부[def 뒤]에 매개변수를 잘못 입력하셨습니다! values를 가변매개변수로 입력해주세요!

    • @김홍철-x4y
      @김홍철-x4y 2 года назад

      @@윤인성 아 되네요! 감사합니다!

  • @hello_sungwon
    @hello_sungwon 2 года назад

    print(value, ..., sep=' ', end='
    ', 등등)
    라고 정의가 되어있습니다.
    value는 가변변수, sep과 end는 기본변수인건 알겠습니다. 그런데 그 사이에 있는 ...은 뭔가요? 또한 value에 *value라고 정의가 안되어있어도 그냥 써보면서 이거는 가변변수겠네라고 예상하면 되는건가요?

    • @윤인성
      @윤인성  2 года назад +1

      넵! 설명으로는 저렇게 쓰는 경우가 일반적입니다!

    • @hello_sungwon
      @hello_sungwon 2 года назад

      @@윤인성 ...은 어떤 뜻인가요?

    • @윤인성
      @윤인성  2 года назад +1

      @@hello_sungwon 생략 기호로 거기에 가변 매개변수 넣을 수 있다는 의미입니다

  • @겨우리야-h7z
    @겨우리야-h7z 2 года назад

    def function(매개변수1, 매개변수2, 기본매개변수1=2, *가변매개변수, 기본매개변수2=1,):
    print(매개변수1, 매개변수2)
    print(가변매개변수)
    print(기본매개변수1, 기본매개변수2)
    function(1,2,3,4,5,6,7,8,9)
    이런 코드에서 기본 매개변수가 가변매개변수 앞에 있으면 출력값이
    1 2
    (4, 5, 6, 7, 8, 9)
    3 2
    가 되는데 기본매개변수1에는 2 값을 줬는데 3이 출력되는 이유가 무엇인가요?

    • @윤인성
      @윤인성  2 года назад

      2를 주어도,
      function(1, 2, 3을 할 때 그냥 3이 들어갑니다.

  • @yisangwoo1972
    @yisangwoo1972 4 года назад +2

    가변매개변수 출력은 튜플형태로 출력됐는데.. 이유가 뭔가요??

    • @윤인성
      @윤인성  4 года назад +1

      yisangwoo1972 그냥 "그렇게 설계되어있기 때문입니다"이외에는 드릴 수 있는 말이 없을 것 같습니다 @_@ ...!

    • @yisangwoo1972
      @yisangwoo1972 4 года назад

      윤인성 답변 감사드립니다.. 그냥 외워야 할 부분이군요^^

  • @준수-f6p
    @준수-f6p 3 года назад

    질문있습니다! 강의에서처럼 print()함수의 자동 완성 기능이 나오면 좋겠는데 제 visual studio로 코딩을 하면 선생님처럼 저런 기능이 나오지 않는데 자동 완성 기능을 사용하려면 어떻게 해야하나요??
    ps. 강의 너무 잘보고 있습니다 감사합니다..!

    • @윤인성
      @윤인성  3 года назад +1

      Visual Studio Code가 이 기능을 처음 불러올 때 시간이 약간 걸립니다.
      다른 분들도 "강의를 듣다보니 어느 순간부터 되었다"라는 경우가 많아서
      일단 그냥 진행해보시는 것을 추천드립니다!

    • @준수-f6p
      @준수-f6p 3 года назад

      @@윤인성 알겠습니다 감사합니다!!

  • @shgo5904
    @shgo5904 3 года назад

    안녕하세요, 두 가지 질문이 있습니다.
    Q1. 가변매개변수를 '*'로 구분하는데,
    def function(*가변매개변수):
    print(가변매개변수)
    function(1, 2, 3)
    라고 작성하면
    (1, 2, 3)
    를 출력하고,
    def function(*가변매개변수):
    print(*가변매개변수)
    function(1, 2, 3)
    라고 작성하면
    1 2 3
    를 출력하는데, 둘이 어떤 차이점이 있는 건가요?
    Q2. 키워드 매개변수는 비파괴적이라고 말할 수 있나요?

    • @윤인성
      @윤인성  3 года назад

      1. 리스트 등의 반복 가능한 객체 앞에 *를 붙이시면
      이건 언 패킹 연산자라는 다른 연산자로 활용됩니다. 많이 쓰이지는 않는데
      test(1,2,3)으로 호출할 수 있는 아이가 있을 때
      이를 test(*[1,2,3])으로 호출하면 리스트의 요소가 각각의 매개변수로 나뉘어 들어갑니다.
      [지금처럼 그냥 출력하시면 각각을 띄어쓰기로 구분해서 출력합니다]
      2. 파괴적 비파괴적은 함수 내부에서 무슨 처리를 하냐에 따라서 구분되는 것이라,
      매개변수로 어떤 형태를 쓰느냐는 관계가 없습니다![파괴적일 수도 있고, 비파괴적일 수도 있습니다].

  • @끝까지가자-w6q
    @끝까지가자-w6q 3 года назад

    질문있습니다! 227pg 3번 문항의 객관식 4번이 왜 오류가 안나는지 이해가 되지 않습니다. 기본매개변수-가변매개변수로 함수가 정의되어있는데요..?(저는 일반-가변-기본매개변수 순으로 변수가 정의되어야한다고 알고 있습니다)

    • @윤인성
      @윤인성  3 года назад

      저도 왜 이런 식으로 언어가 설계된 것인지 이해는 안 되지만,
      앞의 기본 매개변수가 의미만 없어진 것이고 + 실행에는 아무 문제 없습니다!
      지금 말씀해주신 순서로 쓰는 것이 일반적입니다!
      [한 번 코드를 입력해보자! 라는 느낌의 문제로 생각해주시면 좋을 것 같습니다]

  • @서울꺼벙천사-i2m
    @서울꺼벙천사-i2m 3 года назад

    그냥 매개 변수를 아주 간단하게 정리하면
    함수 외부에서 함수 내부로 값을 전달하는 것으로만 정리해도 될까요.

    • @윤인성
      @윤인성  3 года назад

      넵! 정확합니다!

  • @좌민석-o7n
    @좌민석-o7n 2 года назад

    파이참으로 코딩해보고있는데 함수선언할때 매개변수이름을 영어로 하면 실행이되고 한글로 하면 실행이안되는데 원래이런건가요??

    • @좌민석-o7n
      @좌민석-o7n 2 года назад

      선생님이 한거랑 똑같이 코딩해보았는데
      ModuleNotfoundError : No module named 'unicodedata' 라고 오류명이 떠서 매개변수이름을 영어로 바꾸었는데 실행이되었습니다

    • @윤인성
      @윤인성  2 года назад

      파이썬 버전을 확인해보셔야 할 것 같습니다.
      python 명령어를 치면 → 인터랙티브 셸이 뜰 때 위에 버전이 적혀있습니다. 혹시 2.X버전이 아닌지 확인해주세요!
      원래 파이썬은 3버전부터 전세계 모든 언어가 되는데 지금 오류를 보면 내부적으로 뭔가가 꼬여서 그런 것 같기도 합니다 😂
      한글로 코딩하는 경우는 사실 극히 드물어서
      → 버전만 맞는다면 일단 영어 매개변수로 진행하셔도 괜찮습니다!

    • @좌민석-o7n
      @좌민석-o7n 2 года назад

      버전은 3.9입니다 ㅜ 일단 영어로 진행해야될것같네요 감사합니다!!!!

  • @조형욱-q2r
    @조형욱-q2r 3 года назад

    가변매개변수 리턴값이 ()에 넣어져 있는데요 신경 안써도 되나요??

    • @윤인성
      @윤인성  3 года назад

      정확하게 어떤 코드이신지 알려주실 수 있을까요!

  • @hyeonhoonlee4520
    @hyeonhoonlee4520 4 года назад

    라이브러리에 있는 함수를 사용하려면, 추가적인 다운로드가 필요한가요?
    print()함수처럼 비주얼스튜디오코드에서 "print("만 쳐도 매개변수에 대한 설명이 나오는데,
    라이브러리에 있는 함수를 입력해보아도 매개변수에 대한 설명이 나오지 않네요...;;

    • @윤인성
      @윤인성  4 года назад +1

      라이브러리에 있는 함수가 어떤 함수를 의미하는지 더 자세하게 알려주실 수 있을까요?
      일단 비주얼 스튜디오 코드가 자동 완성 기능을 위해 데이터를 읽을 때 시간이 걸리므로 조금 대기하면서 해보시기 바랍니다.

    • @hyeonhoonlee4520
      @hyeonhoonlee4520 4 года назад

      @@윤인성 예를들어, docs.python.org/3/library/random.html 여기 있는 첫함수인, random.seed(를 입력해도 자동 완성 기능이 나오지 않습니다. 혹시, 이 페이지의 맨 위에 있는 Source code란걸 다운 받아야하나요?

    • @윤인성
      @윤인성  4 года назад

      @@hyeonhoonlee4520 소스코드는 이미 파이썬을 설치할 때 됩니다. 자동완성기능이 즉시 작동하는 것이 아니라 대기해보시거나, 파이썬 확장 프로그램을 재설치 해보시거나 해도 괜찮을 것 같습니다. 환경 문제는 정확하게 답변드리기가 힘들어서(대부분 되는데 일부 안 되는 경우 무엇이 문제인지 알기 힘들다보니), 확실하게 답변 못드리는 점은 양해 부탁드립니다.

    • @hyeonhoonlee4520
      @hyeonhoonlee4520 4 года назад

      윤인성 더 진도를 나가보니, p261의 예제처럼,
      "import random"을 입력하고, 그 다음 줄에 "random.seed("를 입력하니 자동완성이 되네요;;
      import라는게 무언갈 불러오는 건가 봅니다...?

    • @윤인성
      @윤인성  4 года назад +1

      @@hyeonhoonlee4520 앗 안 읽으셨었군요 @_@ ...! 당연히 읽으셨을 것이라 생각했는데.... 일단 진도대로 쭉 나가시는 것을 추천드립니다.

  • @김인우-e5u9e
    @김인우-e5u9e 4 года назад

    안녕하세요. p219 키워드 매개변수 예제 문제에서 (*values, n=2)를 (*values, n) 로 변경하였더니 결과가 동일하게 출력되어 기본 매개변수가 가변 매개변수보다 뒤에 있어도 키워드 매개변수가 우선순위가 더 높다고 생각되어 키워드>가변>기본 이라고 이해했습니다. 그러나 (n, *values), (n=3, "1","2") 조합으로 실행했을땐 keyword argument 에러가 발생합니다. 제가 생각한 우선순위에 오류가 있나요? 에러 발생원인은 무엇인가요?

    • @윤인성
      @윤인성  4 года назад

      키워드 매개변수를 __키워드를 넣어 호출하는 형태로 사용하실 때[현재 보여주신 것에서 "n=3" 같은 형태]__는 반드시 함수의 끝 부분에 모아서 사용해주셔야 합니다. 따라서 앞에 넣으면 "위치가 뒤에 따라와야 한다"라는 오류가 발생합니다.
      키워드 매개변수라는 녀석이 특이하게 나중에 추가된 문법이라, 이상한 예외가 굉장히 많은 편입니다 'ㅁ' , 그냥 오류가 발생할 때는 "하아 얘네 왜 이렇게 만들었어"하면서 상콤하게 그러려니 하고 넘어가주셔도 괜찮을 것 같습니다 'ㅁ' ...!!!
      + 추가: def print_n_times(*values, n):으로 변경한 뒤에 print_n_times("안녕하세요", "즐거운", "파이썬 프로그래밍", 2)으로도 호출해보시면 좋을 것 같습니다 'ㅁ' ...!

  • @AlvinMrLee
    @AlvinMrLee 3 года назад

    영상에 나오는 예시에서 가변매개변수를 출력하는 부분에는 결과가 ()괄호로 묶여있는데 이것은 왜 그런건가요??

    • @윤인성
      @윤인성  3 года назад +1

      튜플이라서 그렇습니다! 튜플은 둥근 괄호로 감싸진 것으로 보입니다!

    • @AlvinMrLee
      @AlvinMrLee 3 года назад

      @@윤인성 항상 친절한 답변 감사합니다!!!