FUNDAMENTAL | 06-2. 효율적인 코드 작성

yeonk·2021년 9월 14일
0

aiffel-ai-bootcamp

목록 보기
14/38
post-thumbnail

20210914



1. 함수(Function)

코드의 효율성을 높임.
코드의 재사용성을 높임. - 개발 시간 감소
코드의 가독성을 높임.






pass

기타 제어 흐름 도구.
문법적으로 해당 문장이 필요하지만, 프로그램이 특별히 할 일이 없을 때 사용.






함수 안의 함수, 2개 이상의 return

파이썬에서는 함수 내부에 함수를 사용할 수 있다.
함수 안에서 만든 함수는 해당 함수 내부에서만 사용 가능.

  • return 값으로 리스트를 사용하면 값을 여러개 반환할 수 있다.






2. 람다 표현식(lambda expression)

람다: 런타임에 생성해서 사용할 수 있는 익명 함수 (함수 이름이 없는 함수)

  • 람다 표현식을 사용하는 가장 중요한 이유는 함수의 인수 부분을 간단히 하기 위함



print( (lambda x,y: x + y)(10, 20) )

위키독스: 람다






3. 클래스, 모듈, 패키지

클래스(Class)

비슷한 역할을 하는 함수들의 집합






모듈(Module)

함수, 변수, 클래스를 모아 놓은 파일.
코드의 저장소.

# 아래와 같이 모듈의 별명을 설정할 수 있다
import mycalculator as mc

# 모듈이름.함수이름()
print(mc.add(4, 2))






패키지

여러 모듈을 하나로 모아둔 폴더

# 패키지 설치 방법
# pip install 패키지이름
$ pip install pandas






4. 프로그래밍 패러다임

패러다임(Paradigm):
한 시대의 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리.

인식의 체계 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념






절차 지향 vs 객체 지향

절차 지향 프로그래밍

일이 진행되는 순서대로 프로그래밍

  • 장점
    • 코드가 순차적으로 작성되어 순서대로 읽기만 하면 이해 가능.

  • 단점
    • 위에서 하나가 잘못되면 아래도 연쇄적으로 문제가 생겨 유지보수가 어려움.
    • 일반적으로 코드 길이가 길어 코드를 분석이 어려움



객체 지향 프로그래밍

객체를 먼저 작성하고 함수를 작성.
작성된 객체는 객체 간의 상호작용이 있음.

  • 장점

    • 코드 재사용 쉬움
    • 코드 분석이 쉬우며 아키텍처 변경 쉬움

  • 단점

    • 객체 간의 상호작용이 있기 때문에 설계에서 많은 시간이 소요
    • 설계가 잘못되면 전체적으로 변경해야 함



  • 파이썬은 객체지향 프로그래밍(OOP, Object Oriented Programming) 패러다임



파이썬 - OOP Part 1. 객체 지향 프로그래밍(OOP)은 무엇인가? 왜 사용하는가?





함수형 프로그래밍

데이터 사이언티스트에게 적합한 프로그래밍 패러다임
장점: 효율성, 버그 없는 코드, 병렬 프로그래밍

  • 함수로 문제를 분해

  • 데이터 사이언티스트에게 적합한 프로그래밍 패러다임






함수형 프로그래밍 특징

  • 순수성
    • 부작용이 있는 함수를 사용하지 않음
      (내부 상태 수정, 함수의 반환값에서 보이지 않는 다른 변경사항 생성 등)
    • 순수함수: 부작용이 전혀 없는 함수

  • 모듈성
    • 문제를 작은 조각으로 분해하도록 강제
    • 작업을 작은 함수로 쪼개어 만들면 코딩, 오류 확인이 쉬워지고 가독성이 좋아짐.

  • 디버깅과 테스트 용이성
    • 함수가 작고 명확하게 명시되기 때문에 디버깅을 쉽게 할 수 있음
    • 각 함수는 잠재적으로 단위 테스트의 대상이기 때문에 테스트가 쉬움

함수형 프로그래밍 HOWTO






5. pep8

파이썬 코드 스타일 가이드.
유지보수 측면에서 빠른 코드 이해로 개발 기간이 줄고 가독성 측면에서도 도움.

코드 스타일 - The Hitchhiker's Guide to Python






Whitespace

  • 한 줄의 코드 길이: 79자 이하

  • 함수와 클래스는 다른 코드와 빈 줄 두 개로 구분

  • 클래스에서 함수는 빈 줄 하나로 구분

  • 변수 할당 앞뒤에 스페이스를 하나만 사용

  • 리스트 인덱스, 함수 호출에는 스페이스를 사용 안함

  • 쉼표(,), 쌍점(:), 쌍반점(;) 앞에서는 스페이스를 사용 안함






주석

  • 코드의 내용과 일치하지 않는 주석은 피하기

  • 불필요한 주석 피하기






이름 규칙

  • 변수명 앞에 _(언더바)가 붙으면 함수 등의 내부에서만 사용되는 변수

  • 변수명 뒤에 _(언더바)가 붙으면 라이브러리 혹은 파이썬 기본 키워드와의 충돌을 피하고 싶을 때 사용

  • 가독성을 위해 소문자 L, 대문자 O, 대문자 I를 가능하면 사용하지 않음

  • 모듈(Module) 명은 짧은 소문자로 구성 (필요하다면 언더바 사용)

  • 클래스 명은 파스칼 케이스(PascalCase) 컨벤션으로 작성

  • 함수명은 소문자로 구성

  • 상수(Constant)는 모듈 단위에서만 정의하고 모든 단어는 대문자로 표기






네이밍 컨벤션(Naming convention)

snake_case

  • 모든 공백을 "_"로 표기.

  • 모든 단어는 소문자

  • 함수, 변수 등을 명명할 때 사용


PascalCase

  • 모든 단어가 대문자로 시작

  • UpperCamelCase, CapWords라고 불리기도 함

  • 클래스를 명명할 때 사용


camelCase

  • 처음은 소문자로 시작, 이후의 모든 단어의 첫 글자는 대문자

  • lowerCamelCase

  • 파이썬에서는 거의 사용하지 않음

0개의 댓글