[TIL: 0119] 함수의 활용

ryun·2023년 1월 19일
0

TIL

목록 보기
7/34

함수

함수 사용의 이용

  • 분해
  • 추상화

🚀 함수 응용

내장 함수(Built-in Functions)

  • map
    순회 가능한 데이터 구조의 모든 요소에 함수 적용하고, 그 결과를 map object로 반환
    알고리즘 풀이시 input 값들을 숫자로 바로 활용하고 싶을 때 사용
    map(function, iterable)
    문자열 3 5가 들어오면 split으로 반복가능한 객체로 바뀌고 map 함수로 인해 int로 형변환 후 두 개의 변수에 각각 할당된다

  • List comprehension

기본 구조 : 표현식 + for문
result = [표현식 for 변수 in 리스트]

표현식 + for문 + 조건문
result = [표현식 for 변수 in 리스트 조건문]

조건문 + for문
result = [조건문 for 변수 in 리스트]

중첩 for문
result = [조건문 for 변수1 in 리스트1 for 변수2 in 리스트2 ...]

중첩 List Comprehension

출처) https://velog.io/@mttw2820/List-Comprehension-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC
  • filter
    순회가능한 데이터구조의 모든 요소에 함수 적용하고 그 결과가 True 인 것들을 filter object로 반환
    filter(function, iterable)

  • zip
    복수의 iterable을 모아 튜플을 원소로 하는 zip object를 반환

    출력하면 [('jane', 'justin'), ('ashley', 'eric')]

  • lambda 함수
    표현식을 계산한 결괏값을 반환하는 함수로, 이름이 없는 함수여서 익명 함수라고도 불림
    lambda 매개변수 : 매개변수를 이용한 리턴값

    • return 문을 가질 수 없음
    • 간편 조건문 외 조건문이나 반복문을 가질 수 없음
  • 재귀 함수
    자기 자신을 호출하는 함수
    언제 끝날 것인지에 대한 베이스 케이스를 꼭 넣어줘야 한다
    끝나는 부분은 가장 마지막에 호출한 부분부터 끝나서 올라간다
  • 반복문과 재귀 함수 비교
    대부분 반복문 사용하면 되지만 로직을 떠올렸는데 재귀가 더 빠를 것 같은 경우에만 재귀 함수를 사용하면 된다
    - 항상 두 개를 왔다갔다 할 수 있다

🚀 함수 가변 입력(패킹/언패킹)

패킹/언패킹 연산자

  • 모든 시퀀스형(리스트, 튜플 등)은 패킹/언패킹 연산자 * 를 사용하여 객체의 패킹 또는 언패킹이 가능


  • 가변적으로 인자를 받을 수 있다

패킹

  • 대입문의 좌변 변수에 위치
  • 우변의 객체 수가 좌변의 변수 수보다 많을 경우 객체를 순서대로 대입
  • 나머지 항목들은 모두 별 기호 표시된 변수에 리스트로 대입

언패킹

  • argument 이름이 *로시작하는 경우, 아규먼트 언패킹이라함
  • 패킹의 경우, 리스트로 대입
    언패킹의 경우, 튜플 형태로 대입

  • 가변 키워드 인자 (kwargs)
    몇 개의 키워드 인자를 받을지 모르는 함수를 정의할 때 유용
    딕셔너리로묶여 처리가 되며, 파마리터에 **
    를 붙여 표현한다

📂 모듈과 패키지

다양한 기능을 하나의 파일로 "모듈"
다양한 패키지를 하나의 묶음으로 "라이브러리"
함수(기능) > 모듈(파일단뒤) > 패키지(폴더단위) > 라이브러리(폴더단위)

  • 파이썬 패키지 관리자(pip)
    최신 / 특정 / 최소 버전을 명시해 설치할 수 있다
    이미 설치되어 있는 경우 알리고 아무것도 하지 않는다
    bash, cmd 환경에서 사용되는 명령어
    pip install SomePackage{연산자 버전명}
    pip list
    pip show SomePackage
    장고에서 많이 사용하게 된다

  • 모듈
    특정 기능을 하는 코드를 파이썬 파일(.py) 단위로 작성한 것

  • 패키지
    특정 기능과 관련된 여러 모듈의 집합
    패키지 안에는 또 다른 서브 패키지를 포함

  • 모듈와 패키지 불러오기

import module
from module import var, function, Class
from module import *

from package import module
from package.module import var, function, Class

🌎 가상환경

  • 파이썬 표준 라이브러리가 아닌 외부 패키지와 모듈을 사용하는 경우 모두 pip를 통해 설치해야한다
  • 복수의 프로젝트를 하는 경우 버전이 상이할 수 있다
    그러나 되도록이면 버전이 별도로 존재하는게 좋다. 프로젝트 1과 2의 파이썬 라이브러리 버전이 서로 영향을 받지 않도록 가상환경을 설정하고, 가상환경 내부에서 각각 관리한다
    이런 경우에 프로젝트별로 독립적인 패키지를 관리할 수 있다
    python -m venv {폴더명} (venv는 virtual environment)
    반드시 활성화를 해줘야 한다
    source venv/Scripts/activte
  • pip install ~ pip install requests (외부 모듈 설치)
    pip list
    pip freeze>requirements.txt

0개의 댓글