210705 FUNDAMENTAL 6. 파이썬 알아보기

시에나 Sienna·2021년 7월 5일
0

AIFFEL

목록 보기
5/66
post-custom-banner

1. 파이썬의 성능

  1. 높은 생산성

    • 생산성 : 똑같은 기능을 하는 프로그램을 얼마나 빨리 작성할 수 있는가
    • 퍼포먼스(성능) : 어떤 언어든 코드를 짜서 실행을 시켰을 때 얼마나 빨리 처리가 되는가
  2. 코드의 간결함

    javapython
  3. 빠른 개발 속도 : Python(3시간) >> C > Java > C++(11시간)

  4. 스크립트 언어 : 이미 존재하는 소프트웨어를 제어하기 위한 용도로 쓰는 언어

    컴파일언어스크립트언어(인터프리터언어)

2. 파이썬 더 잘 사용해보자!

1) for문

  1. 실행시간 측정

    import time
    start = time.time()			# 시작 시간 저장
    
    a = 1
    for i in range(100):
    	a += 1
    
    print("time: ", time.time() -start) 	# 종료시간 - 시작시간 = 실행시간
  2. enumerate() 와 이중 for문

  • range(start, stop, step)
  • enumerate() : (리스트, 문자열, 튜플 등) 순서와 리스트의 값을 함께 반환
  • for 문
    • 삼중 for문 이상 & 데이터 多 => 매우 느리게 동작
    • 이중 for문까지만 쓰는 경우가 많음
  1. 리스트 컴프리헨션(list Comprehension) : 셋(Set), 딕셔너리(Dict)에도 적용 가능

    my_list = ['a','b','c','d']
    result_list = []
    
    for i in range(2):			=> result_list = [(i, j) for i in range(2) for j in my_list]
    	for j in my_list:		   # 리스트 컴프리헨션
        	result_list.append((i, j))
        
    print(result_list)
  2. 제너레이터(Generator)

    • Function에 return 대신 yield를 사용하여 함수 내부에서 사용된 데이터들이 메모리에 그대로 유지되는 것

2) Try - Except 예외 처리

  • 코드를 수행하다가 예외(에러)가 발생했을 때 그 예외(에러)를 무시하게 하거나 예외(에러) 대신 적절한 처리를 해주게 하는 등의 작업을 의미

3) Multiprocessing(다중처리, 병렬 처리)

  • 여러 프로세서를 기반으로 병렬적으로 업무 처리를 하는 방식
    • parallel processing : 병렬 처리
    • serial processing : 순차 처리
      multiprocessing

😊 병렬처리 사용

import  multiprocessiong
if __name__ == '__main__' 			: 코드 시작 지점 지정
pool = multiprocessing.Pool(processes = 4)	: 병렬 처리 시, 4개의 프로세스 사용
pool.map(count, num_list)			: 병렬화를 시키는 함수
pool.close() 					: 병렬화 부분이 끝나면 나옴
pool.join() 					: 프로세스가 종료될 때까지 대기

3. function & lambda expression

  • 함수의 장점 : 코드의 효율성, 코드의 재사용성, 개발시이 단축, 코드의 가독성
    * pass : 기타 제어 흐름 도구 ex)함수 내부, if 내부, while 내부 등에서 사용

  • 람다 표현식(lambda expression) : 런타임에 생성해서 사용할 수 있는 익명 함수

    • 함수의 인수 부분을 간단히 하기 위해 사용함
    • 람다 표현식과 자주 쓰이는 함수 : map(), filter(), reduce() 등

기존 함수 정의 : def add(x, y) : return x + y
람다 표현식 변환 => print((lambda x, y: x + y)(10,20))

  • x, y : 입력값
  • x + y : 반환값( = return x + y)
  • (10, 20) : x, y의 입력값(x = 10, y = 20)

4. Class \subset Module \subset package

  • 클래스(Class) : 비슷한 역할을 하는 함수들의 집합
  • 모듈(Module) : 함수, 변수, 클래스를 모아 놓은 파일. 코드의 저장소!
    • 모듈의 이름을 짧게 부르고 싶을 때: as 구문!
    • ex) import mycalculator as mc : myclaculator를 mc라는 모둘의 별명으로 부름. mycalculator.add(4, 2) => mc.add(4, 2)로 적어도 동일하게 실행
  • 패키지(package) ≒ 라이브러리
    • pip 명령어 : 패키지 설치 ex) pip install pandas

RubberDuck

5. 함수형 프로그래밍

  • 파이썬은 객체지향 프로그래밍(OOP) 패러다임을 지원함

참고자료:
1. 객체지향 프로그래밍
2. 함수형 프로그래밍 HOWTO

코드스타일

  1. Whitespace(여백)

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

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

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

    • 변수 할당시 스페이스 하나만 사용

      >ex) `x_=_1` (O), `x__=__1`(X)
      • 리스트 인덱스, 함수 호출시 스페이스 사용 안함

      ex) my_list[0] (O), my_list [0] (X)

      • 쉼표(,), 쌍점(:), 쌍반점(;) 앞에서는 스페이스를 사용하지 않음
      >ex) `my_list[0:1]` (O), `my_list[0 : 1]` (X)
  2. 이름 규칙

    • _변수명 : 함수 등의 내부에서만 사용되는 변수
    • 변수명_ : 라이브러리 혹은 파이썬 기본 키워드와의 충돌회피하고자 할 때 사용
    • 가독성이 안좋은 소문자L, 대문자O, 대문자I를 가능한 사용하지 않음
    • 모듈(Module) 명 : 짧은 소문자로 구성, 필요하다면 밑줄로 나눔
    • 클래스 명 : 파스칼 케이스(PascalCase) 컨벤션으로 작성
      • 대표적인 네이밍 컨벤션 : snake_case, PascalCase, camelCase
    • 함수명 : 소문자로 구성, 필요하면 밑줄로 나눔
    • 상수(Constant) : 모듈 단위에서만 정의, 모두 대문자에 필요하다면 밑줄로
네이밍 컨벤션설명
snake_case- 모든 공백 => "_" & 모든 단어 => 소문자로 변경
- 함수, 변수 등의 이름 지정시 사용 (in Python)
💜output ex) this_snake_case
PascalCase(= UpperCameslCase or CapWords)
- 모든 단어의 첫글자 => 대문자로 시작
- 클래스의 이름 지정시 사용(in Python)
💜output ex) ThisPascalCase
camelCase(= lowerCamelCase)
- 처음 소문자 & 이후 모든 단어의 첫글자 => 대문자
- 주로 java에서 사용(not use Python)
💜output ex) thisCamelCse

참고자료
1. 코드스타일
2. PEP 8 — Python 코드 용 스타일 가이드


아는 듯 모르는 듯한 개념 정리가 많네😂 참고자료들을 시간날때 보면서 정의들을 알아가야 겠다.

post-custom-banner

0개의 댓글