Sunday, July 12, 2015

python 스터디

스터디 및 정리중
1] 파이썬 튜토리얼
1-1) https://docs.python.org/2.7/
1-2) https://wikidocs.net/
* 지하철에서 모바일로 예습하기에 딱 좋다. 내용이 지루해서 컴퓨터앞에서 집중해서 읽기는 힘들었다. 그래도 알긴 해야함.
1-3) https://www.youtube.com/watch?v=Xy903pH7BLA
* 참조2 강의는 정말 맘에든다.
* '일일이 작성하는건 인간이 할짓이 아니다.'라는 표현이 정말 웃긴다.
* 우리 주변엔 컴퓨터의 노예인 코더가 너무 많기때문에 ㅋㅋ
* line 앞에 #을 붙이면 주석
* line 앞에 """을 붙여도 주석. 함수 바로 아래에 쓰면 docstring기능을 한다.
* type casting : 형변환. str(i)
* object, property & method
* print( '{} year, {} day printed'.format(year, day) )
* print( '{1} year, {2} day printed'.format(year, day) )
* 아래와 같이, 출력형태 지정 가능
    print( '{1:%d} year, {2:%x} day, {3, %.2f} sec printed'.format(year, day, float_sec) )
* years_to_print = [ str(y) for y in range(1800, 2014,1) ]
* print(", ".join(years_to_print)) # list의 사이에 본 문자열을 끼워 넣는다.
* years_to_print = [ str(y) for y in range(1800, 2014,1) if y%3 == 0]
* 파일 입출력. open(), write(), close()

1-4) 파이썬 어렵게 배우기 :  http://learnpythonthehardway.org/book/intro.html
1-5) 파이썬 디자인 패턴 : https://www.youtube.com/watch?v=0vJJlVBVTFg
* ppt : http://cdn.oreillystatic.com/en/assets/1/event/45/Practical%20Python%20Patterns%20Presentation.pdf


2] 파이썬특징
2-1) https://ko.wikipedia.org/wiki/파이썬
파이썬에는 「건전지 포함("Battery Included")」이란 기본 개념이 있어 프로그래머가 바로 사용할 수 있는 라이브러리와 통합 환경이 이미 배포판과 함께 제공된다. 이로써 파이썬의 표준 라이브러리는 매우 충실하다. 여기에는 정규표현식을 비롯해 운영 체제의 시스템 호출이나 처리, 직렬화, HTTP ,FTP 등의 각종 통신 프로토콜, 전자 메일이나 CSV 파일의 처리, 데이터베이스 접속, 그래픽 사용자 인터페이스, HTML, 파이썬 코드 구문 분석 도구 등을 포함한다.

 파이썬을 강점은 생산성, 가독성에 있다. 파이썬을 파이썬스럽게 하려면, 스타일 가이드를 잘 따라야한다.

2-3) python의 포인터 개념은?
* 파이썬은 기본적으로 call by reference 개념으로, 포인터가 없다.
* ids는 포인터 개념이 아니다. ids(10)과 a = 10, ids(a) 를 비교해봐라. 똑같다.
* http://www.quora.com/How-can-we-implement-data-structures-like-doubly-linked-lists-in-Python-where-there-is-no-concept-of-pointers
* call by reference이므로 대처 가능하다.

2-4) List comprehension
https://docs.python.org/2/tutorial/datastructures.html
* 리스트 문법 덕분에, multi input(parameter)뿐만 아니라 multi output 도 간단하게 구현 가능하다. c++에서는 리턴타입을 정의해야 하므로, struct, class로 묶거나, reference 파라미터로 받아야 했던걸 상기하하면, 더 직관적이다.

2-5) 파이썬은 동적 언어다.
* 같은 클래스의 오브젝트임에도 필드 변수가 서로 다를 수가 있다. 오브젝트에 필드변수를 추가하는게 가능하다.  - c++같은경우 있을수 없는 일이다.
* 이러한 특징이 유연한 프로그래밍이 가능하게 해준다. - 같은 기능을 구현할때 c++의 경우 부모클래스에 추상함수를 선언하고, 자식함수에서 부모를 상속받는 과정을 거쳐야한다. 같은 기능의 구현이 100% 가능하지만, 더 많이 손이 간다.

2-6) 어느 파라미터 인자인지 명시하여, 순서가 바뀌어도 문제 없이 호출 가능

2-7) 파이썬은 덕타이핑 언어다.
* https://ko.wikipedia.org/wiki/덕_타이핑
* 파이썬에서는 덕타이핑으로써 인터페이스가 암시되어 있다. 덕분에 훨씬 짧은 코드로 구현이 가능하다.

3] 파이썬 문법
3-1) 리스트
* 이중 리스트
* 슬라이싱
* append : elment 한개 확장
* extend : 리스트 + 리스트 확장
* reverse : 순서 반전.
* index : 일치하는 엘리먼트를 찾아서 인덱스 반환.
* sort : 정렬.

3-2) 딕셔너리 (dictionary)
* {Key1:Value1, Key2:Value2, Key3:Value3 ...}

3-3) 연산자 오버로딩
__lt__ : less then
__le__ : less or equal then

3-4) map
* map(함수, 인자리스트) : 리스트 각 인자에 대한 호출 자동화.
* 예제코드 : map(lamda x : x*x, [1, 2, 3, 4])

3-5) 파이썬의 __metaclass__와 inheritance의 차이.
 http://stackoverflow.com/questions/17801344/python-understanding-metaclass-and-inheritance

3-6) __dict__
* read only로 클래스의 정보를 꺼내보임.
* 파이썬이 스크립트 언어니까 __buitlins__.__dict__["exit"]() 같은 호출도 가능하다

4] 기타
4-1) IPython
* ref : http://www.slideshare.net/TaeYoungLee1/20150306-ipython
* 대화형 컴퓨팅으로 분석 프로그래밍에 적합
* 운영체제의 쉘 파일 시스템과 통합
* 웹 기반의 대화형 노트북 지원. 수식, 표, 그림 표현가능


No comments:

Post a Comment