인터넷에 '파이썬 생존 안내서' 라는 파이썬을 접하기에 매우 좋은 슬라이드가 있어
내용의 극히 일부분만을 발췌하여 올립니다.
내용 요약에 포함되지 않은 유익한 내용들도 매우 많기 때문에 읽어보는 것을 권합니다.
* 참고 : 페이지가 700장이 아니라 내용 스크립트 때문에 700 장으로 보이는 것이기 때문에 읽는데 많은 시간이 걸리지 않습니다.
파이썬 생존 안내서 정리
<파이썬의 특징>
import this def example(): return Example() print 'Hello, world' |
모듈, 클래스, 메소드 등을 가지고 있으며 메소드 내부가 아니라도 함수 실행이 가능함.
for x in numbers: if 2< x <4: break else: print 'not found' |
부등호를 숫자 양 옆에 바로 쓸 수 있으며
조건문 뿐만 아니라 루프에도 else 구문을 달 수 있음.
<Ref. Dynamic Typing is NOT Weak Typing>
파이썬은 동적인 언어이면서 type definition이 약하지 않은 언어임.
라이브러리는 pip를 이용하여 간편하게 설치할 수 있다.
용도 별로 쓰이는 파이썬 패키지들 (또는 명령어)
데이터 분석 : Jupyter, Pandas, PySpark
과학계산 : SciPy, NumPy, matplotlib
기계학습 (Theano, TensorFlow)
웹 : Flask, Django, Requests(RESTful을 구현할때 매우 편함)
터미널 앱 : Click, (표준 라이브러리: argparse) / TUI] Urwid (표준 라이브러리 : curses)
데스크톱 자동화 : SikuliX, AutoPy
유닛 테스트 : pytest (기본 라이브러리 : unittest)
소스코드 배포 : Fabric, fabtools
메모리 누수 검사 : objgraph
코드 컨벤션 검사 : flake8 명령
코드 실행시간 측정 : python -m timeit -s [한번 실행할 코드] [벤치마킹할 코드]
python -m [profile, cProfile] [파이썬 파일]
python -m yappi [파이썬 파일] (스레드별로 측정 가능함)(cPython only)
>관련 자료는 http://awesome-python.com/에서 찾아볼 수 있음.
파이썬 2와 3은 완벽히 호환되지는 않지만,
3의 기능을 2에서 활용하기 위하여 __future__ 모듈을 이용하여 사용할 수 있기도 하다
(e.g. from __future__ import unicode_literals)
또한 같은 코드로 2와 3을 함께 지원하기 위하여 six 모듈을 사용
파이썬은 본질적으로 GIL(Global Interpreter Lock)때문에 바이트 코드가 여러 스레드에서 실행이 불가능함.
파이썬을 비동기적으로 구현하는 방식은 크게 3가지가 있음.
- 멀티 프로세싱 : gevent
- 멀티 스레딩 : eventlet
- asyncio : Twisted
파이썬 코드의 표준 컨벤션 PEP8
- 4칸 소프트탭
- 79칸 제한
- import 순서
- snake_case, PascalCase
파이썬은 함수 실행을 도중에 멈췄다가 재개시킬 수 있는 제너레이터가 있음.
return 대신 yield를 이용하면 함수 실행 도중에 값을 리턴할 수 있으며 추가적으로 함수 실행도 가능.
def only_odds(nums): for n in nums: if n%2 ==1: yield n ---------------------------------- >>> odds = only_odds(range(100)) >>> next (odds) 1 >>> next(odds) 3 ---------------------------------- seq = xrange(1000000) seq = only_odds(seq) seq = (x **2 for x in seq) |
yield는 주기적으로 도는 프로그램(e.g. AI)와 같은 프로그래밍을 할 때 매우 편리함.
enemy = player.nearest_player() while player.alive() of enemy.alive() : player.move_to(enemy) player.attack(enemy) yield |
기존 이터레이터를 사용하였다면, 다음 틱에 정보를 넘기기 위해서는 전역변수를 사용하여야 하지만,
이터레이터를 사용함으로써 지역변수를 계속 사용할 수 있는 것을 알 수 있음.
<주로 하는 실수>
with문 없이 파일을 열고나서 안 닫는 경우
f = open('logs') logs = f.read() |
--> with open('logs') as f: logs = f.read() |
인자 기본값으로 가변 객체를 지정 할 때에
def make_node(children=[]): return Node(children) |
--> def make_node(children=None): if children is None: children = [] return Node(children) |
Exception 코드 : 파이썬의 경우 BaseException이 최상위 exception임.
스핀락 코드 : Event.wait() 나 세마포어와 같은 함수를 이용하여 불필요하게 동작하는 코드들을 없애야 함.
< 마무리 >
파이썬은 많은 오픈소스 코드, 패키지와 더불어 커뮤니티가 잘 생성되어 있는 언어임.
이러한 오픈소스의 도움을 얻는다면 효율적이고 빠른 개발이 가능할 것임.
'프로그램 > Python' 카테고리의 다른 글
[Python Challenge] 파이썬 챌린지 - 9 (0) | 2017.07.02 |
---|---|
[Python Challenge] 파이썬 챌린지 - 8 (0) | 2017.04.11 |
파이썬 int형을 str형으로 바꾸어 출력하기 (0) | 2017.04.11 |
[Python Challenge] 파이썬 챌린지 - 7 (0) | 2017.03.18 |
[Python Challenge] 파이썬 챌린지 - 6 (0) | 2017.03.08 |
[Python Challenge] 파이썬 챌린지 - 5 (0) | 2017.03.07 |
[Python Challenge] 파이썬 챌린지 - 4 (0) | 2017.02.27 |