12-1. 들어가며


  • 학습 목표

    • 각 인수들의 특징을 이해하고 코드를 이해할 수 있음.
    • 변수의 범위를 이해하고 구분할 수 있음.
  • 목차

  • 인수의 종류와 리스트와 딕셔너리의 언패킹까지 살펴볼 예정

    • 인수의 형식
    • 변수의 범위(variable scope)
    • 함수에서 재귀호출 사용하기

12-2. 인수의 형식


  • 위치 인수(positional argument)

    • 함수에 넣는 인수의 위치가 정해져 있는 방식
    • 리스트나 튜플 활용 가능 : 앞에 * 붙여서 함수에 넣어주기
      함수(*리스트) 
      함수(*튜플)
  • 언패킹(unpacking)

    • 리스트 앞에 * 를 붙이면 언패킹(unpacking)되어 -> print_nums(10, 20, 30)와 동작이 똑같아서 함수 잘 작동!
  • 직접 붙여도 동작은 동일

    • 단, 매개 변수 개수와 리스트 요소 개수는 동일해야 함.
      • 개수가 다를 경우
  • 가변 인수(variable argument)

    • 기존에 배운 함수들과 달리 임의 개수의 인수를 받을 수 있음.
    • 매개변수 앞에 * 기호를 붙이면 된다!
    def 함수명(*매개변수):
        코드

🚨주의🚨 : 언패킹과 가변 인수에서의 *의 차이?

  • 언팩킹 : 인자에 * 기호를 붙인다!
  • 가변 인수 : 매개변수 앞에 * 기호를 붙인다!
  • 모두 더해주는 함수를 가변인수로 만들어보기

    • *args에 들어온 가변인수들은 튜플이어서 for문으로 반복 가능!

    • 인수가 없어도 에러 없이 리턴값 출력!

    • 함수에 인수를 직접 여러 개 넣어도 되고, 리스트나 튜플 언패킹을 사용해도 된다!

  • 키워드 인수

    • 용도에 맞게 인수가 자기 자리를 찾을 수 있도록 하기 위해 사용
    • ex) 반려견의 정보를 출력하는 함수 만들기
    • 알맞은 순서와 잘못된 순서
  • 그래서 키워드 인수를 사용한다!

    • 인수의 순서와 용도를 매번 기억하지 않아도 되도록 하는 것.
    • 장점 : 순서가 올바르고, 인수의 용도가 정확히 보인다!!
  • 가장 대표적인 키워드 인수

    • print 함수의 sep, end

  • 키워드 인수 + 딕셔너리 언패킹

    • 딕셔너리 언패킹 : 딕셔너리 앞 ** 붙여 사용

      함수(**딕셔너리)
    • dog_info함수 재사용

    • 딕셔너리에 '키워드': 값 형식으로 인수 저장 & 앞에 ** 붙여서 함수에 삽입

    • 변수 대신 딕셔너리 앞에 바로 ** 붙여도 동작 동일

왜 **두번일까?

  • 키만 출력되기 때문!
  • 딕셔너리는 키:값 쌍이기 때문에 2개를 붙이는 것
  • 키워드 가변 인수
def 함수명(*매개변수):
    코드
  • items()
    • 딕셔너리의 Key:Value 쌍을 얻을 때 사용
    • 키워드와 인수를 넣었을 때, 자동으로 키워드와 인수를 저장!
    • 인수를 직접 넣기
    • 딕셔너리 언패킹하기

12-3. 변수의 범위(variable scope)


  • 지역 변수(local variable)

    • 함수 내부에서 선언하는 변수

      • sum_nums에서 누적 합 저장을 위해 sum 사용 -> 함수 내에서 선언했으니 지역 변수!
    • 지역 변수는 함수 안에서만 사용 + 밖으로는 알려지지 않는다!

    • 함수를 호출 ➡️ mango은 내부적으로 temp 변수 생성&사용 ➡️ 함수 종료 시 사라짐.

    • 지역변수를 사용하는 이유

      • 함수에 필요한 모든 것을 내부에 포함시켜 독립성 & 재활용성 향상

  • 전역 변수(global variable)

    • 함수 바깥에서 선언하는 변수

    • 지역 변수와 달리 어디에서나 참조 가능

    • ex) 할인율이 정해지면 할인 이후 가격을 바로 출력 해주는 함수 만들기

      • 전역 변수 : sale_rate
      • 그럼 sale_rate를 바꿔보면?
        • 전역 변수가 변함에 따라 함수 결과값도 바뀜!

12-4. 함수에서 재귀호출 사용하기


  • 재귀 호출(recursive call)이란?

    • 함수 안에서 함수 자기자신을 호출하는 방식
  • 파이썬은 최대 재귀깊이가 1,000으로 정해져 있다!

    • 즉, 최대 재귀깊이까지 가지 않도록 종료 조건 반드시 명시해야 함.
    • ex) hello 함수에 종료 조건을 포함하도록 수정
profile
언젠가 내 코드로 세상에 기여할 수 있도록, Data Science&BE 개발 기록 노트☘️

0개의 댓글

관련 채용 정보