5강 함수

Han Hanju·2022년 3월 16일
0
post-thumbnail

5.1 함수 - 관련된 처리를 모음

  • 인수로ㅓ 데이터를 받아 처리하고, 그 결과를 반환값으로 호출자에게 돌려줌
  • 파이썬에서 모든 데이터는 객체
    • 함수또한 객체
    • 인수로 전달, 변수에 대입가능

1. 함수 정의와 실행

2. 인수를 받는 함수

  • 인수가 없이 호출하면 에러
  • 인수 기본값 설정

3. 함수는 객체

  • 함수를 정의하면 함수명의 이름과 같은 함수객체가 만들어진다
  • 변수에 대입가능
  • 다른 함수의 인수나 반환값으로 사용 가능

4. 함수의 반환값

  • return문을 사용해 반환값 지정

1) return이 없을때 반환값

  • None값을 전달

5. 함수의 다양한 인수

  • 가인수: 함수를 정의할 때 사용하는 인수
  • 실인수: 함수를 호출할 때 전달하는 인수

1) 위치인수 - 가인수 이름을 지정하지 않고 실인수를 전달함

  • 실인수의 순서가 가인수와 같아야한다.
  • 순서나 수가 같지 않으면 TypeError발생

2) 키워드 인수 - 가인수 이름을 지정해 실인수를 전달함

  • 호출 순서는 영향을 주지 않는다
  • 존재하지 않는 가인수 이름을 지정하면 TypeError

3) 기본값을 가진 인수 - 호출시 실인수를 생략할 수 있는 인수

  • 실인수가 전달되지 않았을때 기본값을 사용
  • 기본값이 있는 가인수는 없는 가인수보다 뒤에 위치
  • 이미 사용하고있는 함수에 기본값을 가진 인수를 추가해도 기존호출코드 수정 필요없음

4) 기본값의 함정

  • 함수가 정의될때 한번 값이 구해지고, 호출할때마다 미리 계산된 값을 사용

5) 길이가 변하는 인수

  • 가인수 이름에 *를 붙여사용
  • 임이의 이름을 이용할 수 있지만 *args자주 사용
  • 가인수에 할당되지 않은 위치 인수를 튜플로 받는다.
  • 위치: 다른 위치 인수의 가장 마지막, 기본값을 가지는 인수보다는 앞

6) 길이가 변하는 키워드 인수

  • 가인수 이름에 **를 붙여 정의
  • **kwargs 주로 사용
  • 딕셔너리로 받음
  • 위치: 가장 마지막
  • 어떤 인수도 유연하게 받음

7) 키워드만 인수로 가짐 - 호출시 가인수 이름을 반드시 전달해야하는 인수

  • 반드시 가인수 이름을 지정
  • 인수의 의미를 이용자에게 전달 및 가독성 높이는 효과
  • 가인수 앞에 *를 지정

8) 위치만 인수로 가짐 - 호출시 가인수 이름을 지정할 수 없는 인수

  • 일부 내장함수
    • abs(), pow()
  • 3.8부터 사용자가 정의하는 함수에서도 이용
  • 위치만 인수로 할 가인수를 나열한 뒤 /를 지정

6. 인수 리스트 언팩 - 리스트나 딕셔너리에 저장된 값을 인수로 전달

    • 연산자를 이용해 리스트나 딕셔너리로부터 인수를 전개하는 기능
  • 리스트나 튜플에 저장되어있는 값을 함수의 위치 인수로 전달
  • **연사자를 이용하여 딕셔너리에 저장된 값을 키워드 인수로 전달

7. 함수의 독스트링

  • 주석과 같음
  • 해당함수의 개요, 인수나 반환값의 설명이나 타입등 기술

5.2 lambda 식 - 이름이 없는 함수 작성

1. lambda 식 정의와 실행

  • 반드시 1행으로 기술

2. lambda 식을 사용할 위치

  • 함수를 인수로 받는 함수를 호출할때
  • filter(), sorted()

5.3 타입힌트

  • 애너테이션을 이용해 타입힌트 추가
  • 함수의 인수와 반환값에 타입정보를 붙임
  • 실행시 타입체크를 수행하지 않는다.

1. 타입 정보를 부여함으로써 얻을 수 있는 장점

  • 유지보수성이 높아진다.
  • 타입정보를 황용한 코드자동생성에 활용

2. 타입 정보 부여

  • 부여된 타입정보는 객체의 속성 annotations에 저장됨

3. 변수에 대한 타입정보 부여

4. 타입 힌트 활용사례 - 정적 분석 도구 이용

  • 정적 분석도구 mypy를 이용해 체크 가능
profile
Data Analytics Engineer

0개의 댓글