6/03/2016

PYTHON 기본 설명

1. Python 

PYTHON은 기본적으로 컴파일러 형식이 아닌 인터프리터 방식의 언어를 채택하여 사용하며, 호환성을 기본목적으로 하는 것 같다.
이는 Java의 JVM(Java Virutal Machine)과 비교하면 되겠지만, Java 와 다른게 인터프리터 형식으로 연결해주는 것 같다.
그래서 계산이 많고, 복잡한 기능들을 빠른 실행이 힘들지만, 다양한 호환성과 다루기편하여  쉽게 Programming이 가능하여 Programer에게 편이성을 제공하는 것 같다.

이도 역시JVM의 목적과도 유사한 것 같다.Embeded에서 이제는 주로 ARM을 사용하지만,이 전에는 PowerPC 및 x86의 호환성을 생각하고,
다루기 편하게 설계된 것이 Java 인 것 처럼 Python 역시 호환성과 프로그래밍 용이성이 생명인 것 같다.

위에서 언급했듯이 Python의 장점은 인터프리터 언어로만 끝나는것이 아니라, 기존에 존재하는 C , Java와 함께 연동이 가능하며,
쉽게 Python으로 Programming 하여 이들을 이용하는 것이다. 이는 Graphic Library 인 GTK or QT 뿐만 아니라
Gstreamer 그 밖에 Protocol 및 Device 제어, 다양하게 제공해주는 Module과 함께 손쉽게 프로그래밍 하는 것이다.

  • 이외 에도 Google에서 만든 Go 가 존재하지만, 경험이 없어 비교만 하겠다. 
     https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=go&lang2=python3

  • Python의 동작원리 및 인터프리터관련 추가설명 
     https://medium.com/@cookatrice/why-python-is-slow-looking-under-the-hood-7126baf936d7#.hxqffvzb3
     https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC


1.1  Python의 Version 

Python의 문법과 Design은 Version 이 변경이 되면서 부터 좀 많이 변경이 되었으며,
Version 별로 지원되는 Library가 있기에 확인이 중요한 것 같다.
Version 3과 2가 호환이 되지 않기에 이를 좀 주의하면서 확인을 해야 할 것 같다.

  • Python 2.6/7
주로 이전 소스 및 관련 Open Source에 연결된 Package들 때문에 v2를 사용하며, 가급적 v3사용
      https://docs.python.org/2.6/tutorial/index.html

  • Python 3
상위와 호환이 되지 않으며 최신 오픈소스들은 이 기반이지만, 예전 소스는 v2이므로 주의 
      https://docs.python.org/3/tutorial/index.html
      https://docs.python.org/3/tutorial/controlflow.html

나의 경우는 갑자기 Python을 써야하는 경우가 발생하여, 위 Manual을 읽고,
많은 도움이 되었으며, Gstreamer 와 GTK관련부분 Python부분을 수정하여 구현을 하였다.
하지만 머리가 좋지 않아, 익숙지 않으며, 매번 Manual을 읽어야만 하는 것 같다.

1.2 Python의 종류

Cpython과 관련 Library 및 GTK에 Gstreamer를 사용을 하며,Android에서 사용하는 qpython이나 가지고 장난하는 수준이어서 많은 정보를 제공을 못하지만,
아래와 같이 간단히 설명한다.

  • Cpython(Cython)
C언어로 작성된 Python으로 Python의 Virtual machine에 의해 interpret가 되며, CPython의 모듈을 통한 C Library들과의
호환성을 최대로 하며, 장점은 C Library의 접근이 용이하여, 그래서 많은 Module과 Library를 제공을 한다.
기본적으로 Python이라고 하면 Cpython을 말한다.

     https://www.python.org/
     https://en.wikipedia.org/wiki/CPython
     https://wiki.python.org/moin/PyGtk
     https://docs.python.org/3/faq/library.html

  • PyPi (The Python Package Index)
PyPi는 RPython라는 Python의 제한 정적 형식의 구현이 된 Python interpreter이며, PyPi는  (just-in-time) 컴파일러 기능
다양한 back-ends (C, CLI, JVM을)지원을 한다, PyPy는 성능향상과 CPython과의 호환성을 목표로하고 있으며, PyPi는 CPython보다 5배정도 빠르다고 한다.

     https://pypi.org/
     https://pypi.python.org/pypi

  • Jython
자이썬이라고 불리는 이 Python는 Java bytecode 정확히말하면, JVM에 실행이되는 코드와 Python Code를 Compile을 하여
만들어진 Python이며, 장점은 Java의 호환성이라고 한다.

     http://www.jython.org/index.html
     http://jythonbook-ko.readthedocs.io/en/latest/JythonAndJavaIntegration.html

  • IronPython 과 PythonNet
.Net framework를 위한 Python으로 생각하면 될 것 같으며, 현재 나의 경우는 Window Program을 사용할 일이 없을 것 같아 정리만한다.

  • Python의 종류와 그 밖에 관련설명
     http://docs.python-guide.org/en/latest/starting/which-python/
     http://codedragon.tistory.com/865
     http://www.wikitree.co.kr/main/news_view.php?id=160061


2. Python의 Module Library 

Python은 Import 기능은 Module Library를 Include 하여, 그 안에 존재하는 Funcion을 이용가능하며,
이는 손쉽게 사용하고자 하는 Module Library 제어가 가능하다.
그래서 Module 및 Library의 지원확인이 매우 중요하다.

A. Module의 위치 
  1. 현재 directory
  2. 만약 위해서 찾지 못했다면, 환경변수 PYTHONPATH 에 있는 곳으로 찾음
  3. 그래도 찾지 못하면, UNIX는 /usr/local/lib/python/.

B. Module 기본 사용법

  • 자신의 Module 사용법
     단순히 자신의 module.py를 만들어, 다른 test.py에서 호출 수준.
     http://www.ibiblio.org/g2swap/byteofpython/read/making-modules.html

  • C와 Python의 Interface
     자신이 만든 C의 동적 Lib *.so와 python을 연결하는 방법
     http://www.scipy-lectures.org/advanced/interfacing_with_c/interfacing_with_c.html
     https://docs.python.org/2/extending/extending.html
     https://docs.python.org/3.3/extending/extending.html#

     직접 동적 lib *.so를 호출가능
     https://docs.python.org/2/library/dl.html

  • 기본 Module 사용방법
     http://www.tutorialspoint.com/python/python_modules.htm


C. Module과 Package 이용방법

     Package는 여러 Python Program의 묶음이라고 생각하면 되겠다.
     https://docs.python.org/2/tutorial/modules.html


D. 유용한 Python Module Library

     https://wiki.python.org/moin/UsefulModules

이곳에서, Python이 제공되는 Module Library를 확인가능하다.

E. Python Standard Library 

  • V3
     https://docs.python.org/3.3/library/index.html#library-index
     https://docs.python.org/3/library/

  • V2
     https://docs.python.org/2/library/


2.1 Python의 활용

Python의 활용은 지원되는 Module Library에 있으며, 이 기본 API들을 사용방법을
아는것이 최대 활용이겠다.

GTK, QT, Gstreamer, Android의 각종 Deivce 제어 뿐만 아니라, http 연결 활용용도가 너무 많다.

  • Python 기본사용법     
     http://www.tutorialspoint.com/python/index.htm

  • Android에서의 파이썬
      http://nullege.com/codes/search/android.Android
      http://qpython.com/#qrcode
      https://wikidocs.net/145
      http://nullege.com/codes/show/src@w@e@WebSocket-for-Python-HEAD@example@droid_sensor.py/48/android.Android

  • 장고 (Web)
      http://tutorial.djangogirls.org/ko/django/

  • 파이썬과 장고
      http://raccoonyy.github.io/useful-korean-blog-for-python-and-django/