[Python] 기초 - 함수(응용)

ITmakesmeSoft·2022년 9월 3일
0

PYTHON [BASIC]

목록 보기
8/13
post-thumbnail

내장 함수(Built-in Functions)

  • 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형(type)이 내장되어 있음
    • 내장함수 목록
      • A

        • abs()
        • aiter()
        • all()
        • any()
      • C

        • chr() 아스키 코드 값을 문자로 변환해 주는 함수 (10진수, 16진수사용 가능)
      • F

        • filter(function, iterable) 순회 가능한 데이터 구조(iterable)의 모든 요소에 함수(function) 적용하고, 그 결과가 True인 것들을 filter object로 반환
          def odd(n):
          		return n % 2
          numbers = [1,2,3]
          result = filter(odd, numbers) # <filter object at 0x000001FB4B217F40> <class 'filter'>
          print(list(result), type(result)) # [1, 3]
          
      • J

        • .join(list) 리스트에 특정 구분자를 추가하여 문자열로 변환하는 함수
          # ‘구분자’.join(*list*) : 구분자를 넣어서 하나의 문자열로 반환
          print('_'.join(['a','b','c'])) # a_b_c
          
          # ‘’.join(*list*) : 공백일 경우 문자열만 합쳐서 반환
          print(''.join(['a','b','c'])) # abc
      • M

        • map(function, iterable)
          • 순회 가능한 데이터 구조(iterable)의 모든 요소에 함수(function) 적용하고, 그 결과를 map object로 반환

            numbers = [1, 2, 3]
            result = map(str, numbers) # <map object at 0x000020984097F0> <class 'map'>
            print(result, type(type(result))
            print(list(result)) # ['1', '2', '3']
      • O

        • ord() 특정한 하나의 문자를 아스키 코드 값으로 변환해 주는 함수
      • Z
        - zip(*iterables)

            복수의 iterable을 모아 튜플을 원소로 하는 zip object를 반환
            
            ```python
            girls = ['jane', 'ashley']
            boys = ['justin', 'eric']
            pair = zip(girls, boys)
            print(pair, type(pair)) # <zip object at 0x000001A4B3DD0380> <class 'zip'>
            print(list(pair)) 
            # [('jane', 'justin'), ('ashley', 'eric')]
            ```
            

lambda 함수

  • lambda [parameter] : 표현식
    • 표현식을 계산한 결과값을 반환하는 함수로, 이름 없는 익명함수라고도 불림
  • 특징
    • return문을 가질 수 없음
    • 간편 조건문 외 조건문이나 반복문을 가질 수 없음
  • 장점
    • 함수를 정의해서 사용하는 것보다 간결하게 사용 가능
    • def를 사용할 수 없는 곳에서도 사용 가능
# 삼각형의 넓이를 구하는 공식
# 1. def 버전
def triangle_area(b, h):
    return b*h/2
print(triangle_area(5,6)) # 15.0

# 2. 람다 버전
triangle_area = **lambda b, h : b*h/2**
print(triangle_area)

재귀 함수(recursive function)

  • 자기 자신을 호출하는 함수
  • 무한한 호출을 목표로 하는 것이 아니며, 알고리즘 설계 및 구현에서 유용하게 활용
    • 알고리즘 중 재귀 함수로 로직을 표현하기 쉬운 경우가 있음(ex, 점화식)
    • 변수의 사용이 줄어들며, 코드의 가독성이 높아짐
  • 1개 이상의 base case(종료되는 상황)가 존재하고, 수렴하도록 작성
# 팩토리얼 재귀 구현 예시
def factorial(n):
    if n==0 or n==1:
        return 1
    return n * factorial(n-1)
print(factorial(5)) # 120
📢 **재귀 함수 주의 사항**
  • 재귀 함수는 base case에 도달할 때까지 함수를 호출.
  • 메모리 스택이 넘치게 되면(stack overflow) 프로그램이 동작하지 않게 됨
  • 파이썬에서는 최대 재귀 깊이(maximum recursion depth)가 1,000번으로, 호출 횟수가 이를 넘어가게 되면 Recursion Error 발생

모듈

1. 모듈과 패키지

  • 모듈(Module)
    • 특정 기능을 하는 코드를 파이썬 파일(.py) 단위로 작성한 것
  • 패키지(Package)
    • 특정 기능과 관련된 여러 모듈의 집합
    • 패키지 안에는 또 다른 서브 패키지를 포함
  • 모듈과 패키지 불러오기
    import *module # 'import' ~ : 불러옴*
    from *module* import *var, function, Class #'from' ~ : ~로 부터*
    from *module* import *   # '*': 전부
    
    from *package* import *module*
    from *package.module* import *var, function, Class*
    
  • 라이브러리(Library)
    • 다양한 패키지를 하나로 묶어 놓은 것

2. 파이썬 패키지 관리자(PIP; Package Install for Python)

  • PyPI(Python Package Index)에 저장된 외부 패키지들을 설치하도록 도와주는 패키지 관리 시스템
  • 패키지 설치/삭제
    • 최신버전 / 특정버전 / 최소버전을 명시하여 설치할 수 있음

    • 이미 설치된 경우 알려주고, 아무것도 하지 않음

      # 패키지 설치
      $ pip install SomePackage
      $ pip install SomePackage==1.0.5 
      $ pip install 'SomePackage>=1.0.4'
      
      # 패키지 삭제
      $ **pip uninstall SomePackage**
      
      # 패키지 목록
      $ pip list
      
      # 특정 패키지 정보
      $ pip show SomePackage
      
  • 패키지 관리
    • 아래의 명령어들을 통해 패키지 목록을 관리하고 설치할 수 있음

    • 일반적으로 패키지를 기록하는 파일은 requirements.txt로 정의

      $ pip freeze > requirements.txt # 패키지 목록 관리
      $ pip install -r requirements.txt # 목록의 모든 패키지 설치

3. 모듈과 패키지 활용하기

  • 패키지는 여러 모듈, 하위 패키지로 구조화
    • 활용 예시 : package.module
  • 모든 폴더에는 init.py를 만들어 패키지로 인식
    • Python 3.3부터는 파일이 없어도 되지만, 하위 버전 호환 및 프레임워크 등에서의 동작을 위해 파일 생성을 권장

가상환경

  • 파이썬 표준 라이브러리가 아닌 외부 패키지와 모듈을 사용하는 경우 모두 pip를 통해 설치해야 함

  • 복수의 프로젝트를 진행하는 경우 버전이 상이할 수 있음

    • 과거 외주 프로젝트 : django ver 2.x
    • 신규 회사 프로젝트 : django ver 3.x
  • 이러한 경우 가상환경을 만들어 프로젝트별로 독립적인 패키지를 관리할 수 있음

  • 가상 환경을 만들고 관리하는데 사용되는 모듈 (Python ver 3.5~)

  • 특정 디렉토리에 가상 환경을 만들고, 고유한 파이썬 패키지 집합을 가질 수 있음

  • 가상 환경 생성 시, 해당 디렉토리에 별도의 파이썬 패키지가 설치됨

    $ python -m venv <폴더명>
  • 가상 환경 활성화 / 비활성화 명령어

    플랫폼명령어
    활성화POSIXbash/zsh$ source /bin/activate
    fish$ source /bin/activate
    csh/tcsh$ source /bin/activate
    PowerShell Core$ /bin/Activate.ps1
    Windowcmd.exeC:> /Scripts/activate.bat
    PowerShellPS C:\ /Scripts/Activate.ps1
    비활성화$ deactivate
profile
💎 Daniel LEE | SSAFY 8th

0개의 댓글