'파이썬'에 해당되는 글 4건

  1. 2014.09.17 iPython Install On CentOS7
  2. 2013.04.30 열혈강의 파이썬 10장 연습문제 풀이
  3. 2012.11.21 파이썬의 특징
  4. 2012.11.21 Python

http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/


OS: Centos7

Python Version: 2.7.5 (CentOS7 기본적으로 설치되는 파이썬 버전)


iPython은 Console에 쉘환경을 올리거나, 웹 서비스를 올려서 입력과 출력을 중계해 주는 역할을 한다.

iPython qtconsole : 터미널 형태의 쉘 환경

iPython notebook : 웹 브라우저 기반의 쉘 환경



iPython을 설치하기 전에 설치해야할 패키지들

# yum groupinstall "Development tools"

# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel



Shared Library 

.bashrc에 LDFLAGS="-Wl,-rpath /usr/local/lib" 추가.

/etc/ld.so.conf 에 아래의 것을 추가

include ld.so.conf.d/*.conf

/usr/local/lib


Pip Install

iPython은 Pip에 의존하므로 Pip를 설치해야 한다.

# wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py

# python2.7 ez_setup.py

# easy_install-2.7 pip

여기까지하면 pip는 모두 설치 된 것이다.


Pip 사용법

# pip2.7 install [packagename]

# pip2.7 install --upgrade [packagename]

# pip2.7 uninstall [packagename]


iPython Install

# pip uninstall ipython

# pip install ipython[all]


이제 터미널에서 ipython notebook 명령을 내리면 아래와 같이 ipython notebook이 뜬다.


iPython notebook Server Setup

Python 웹 환경을 localhost 에서만 쓸 것이 아니면, web server profile 을 생성하여 web client 가 접속 했을 때, hosting을 제공하도록 설정해야 한다.


iPython 접속 토큰 생성

iPython을 실행한다.

passwd() 함수를 실행 후, password는 그냥 엔터로 넘어간다. 두번 다!

Enter password: <그냥 엔터>

Verify password: <그냥 엔터>

비밀번호는 기억하고 있던가, 어딘가에 써 놓는다. 나중에 필요함.


Server Profile 생성 (Profile 이름: scserver)

$ ipython profile create scserver


Server Profile 설정

gvim ~/.ipython/profile_scserver/ipython_notebook_config.py

..................................

수정 내용

c.IPKernelApp.pylab = 'inline'

c.NotebookApp.ip = '*'                         # <접속 가능한 ip 리스트>

c.NotebookApp.open_browser = False

c.NotebookApp.password = u'(위에 생성했던 비밀번호 입력) sha1~~~50'

c.NotebookApp.port = 1234                 # (포트 번호, 기본은 8888인데 그대로 쓰던가 바꾸던가)


iPython notebook 실행

$ ipython notebook --profile=scserver


Sample Code

iPython 웹 환경 접속     

http://<Server IP>:<Port Number>





컴퓨터 부팅 시 자동으로 iPython notebook server를 Process로 올리는 방법

# vi /etc/rc.local

cd /home/[user name]/.ipython && ipython notebook --profile=scserver --no-browser &

만약, /home/[user name]/.python에 scserver가 setup 되었다는 가정하에 위의 것을 추가한다. 즉, notebook server 가 설치 되어 있는 곳을 잡아주면 된다.


# chmod +x /etc/rc.d/rc.local

# restart


참고 페이지:

http://ipython.org/ipython-doc/1/interactive/public_server.html



'Programming > etc' 카테고리의 다른 글

[Ubuntu/Lubuntu] IPython Notebook Setup  (0) 2015.04.30
[Ubuntu14.04 LTS] AMP Install  (0) 2015.02.07
Python matplotlib 설치 및 예제 실행  (1) 2014.09.15
Python Qt4 설치  (0) 2014.09.15
CentOS7 QT5 Setup  (0) 2014.09.15
Posted by scii
:


한번 풀어 본 연습문제


python_chapter_10.py


"""

# Q1) range 함수와 유사한 frange 함수를 만들어라. frange는 실수 리스트를 리턴한다.

# frange의 기본 시작 값은 0.0이고, 기본 단계 값은 0.25 이다.

# frange(5.0), frange(1.0, 5.0), frange(1.0, 3.0, 0.1) 등이 동작하도록 하라.


def frange(val, basic=0.0, step=0.25):

    l=[]


    if val < basic:

        start=val

        stop=basic

    else:

        start=basic

        stop=val


    while start < stop:

        l.append(start)

        start+=step

    return l


if __name__=='__main__':

    print frange(2)

    print frange(1.0, 2.0)

    print frange(1.0, 3.0, 0.5)

"""



"""

# Q2) 조합 논리 회로 1비틑 덧셈기 adder를 시뮬레이션 하고자 한다. adder는 두 개의

# 0 또는 1의 값을 가지는 인수를 받고 두 개의 값을 리턴한다. 리턴 값은 덧셈 결과를

# 두 자리로 한 결과이다. adder(0,0) 의 결과는 (0,0)이고 adder(1,1)은 (1,0)이다. 

# adder(0,1)이나 adder(1,0)은 (0,1)의 결과를 낳는다. 이 adder 함수를 작성하라. 


def adder(n1, n2):

    if (not n1) and (not n2):

        return (0,0)


    elif n1 and n2:

        return (1,0)


    else:

        return (0,1)


if __name__=='__main__':

    print adder(0,0)

    print adder(1,1)

    print adder(1,0)

    print adder(0,1)

"""



"""

# Q3) 함수 sum을 정의하라. 이 함수는 임의의 개수의 인수를 받아서 그 합을 계산한다.

# 예를 들면 sum()은 0을, sum(1,2)은 3을 sum(1,5,7,2,3)은 18을 리턴한다. (가변 인수)


def sum(*args):

    return reduce(lambda x, y: x+y, args, 0)


if __name__=='__main__':

    print sum(*range(0,101))

"""


"""

# Q4)이미지 파일을 작게 표시하기 위한 썸네일이라는 작은 이미지 파일들이 있다.

#        이 파일들은 원래의 이미지 파일에 _thumb란 이름이 추가로 붙는다.

#        예를 들면 a.jpg의 썸네일 파일은 a_thumb.jpg 이다.

#        이미지 파일 이름들이 리스트에 담겨 있을 때,

#        filter를 이용하여 여기서 일반 이미지 파일만 혹은 썸네일 파일만 골라 내어라.


imgList = ['a_thumb.jpg', 'toto', 'ajaj.jpg', 'haha.jjj']


def ImgFileFilter(img):

    return filter(lambda x: (x.find('.jpg') > 0) or (x.find('_thumb') > 0), img)


if __name__=="__main__":

    print ImgFileFilter(imgList)

"""


"""

# Q5) 주어진 문자열(예: 'as soon as possible')에서 각 단어의 첫 글자를 취해서

# 하나의 단어를 만들어라. (split, map, join 이용)


def MakeChar(string):

    tmpList = map(lambda x: x[0], string.split())

    return ''.join(tmpList)


if __name__=='__main__':

    print MakeChar('as soon as possible')

"""  


"""

# Q6) data.txt 파일에 다음과 같은 내용이 저장되어 있다. 이들을 읽어 리스트 x에

# [1,4,7], 리스트 y에 [2,5,8], 리스트 z에 [3,6,9]가 저장되도록 map 함수를 이용하여

# 작성하라. (리스트 안의 숫자는 모두 정수형이어야 한다.)


def NumList(f):

    strList = f.readlines() # readlines는 리스트로 리턴

    x = map(lambda i: int(i[0]), strList)

    y = map(lambda i: int(i[2]), strList)

    z = map(lambda i: int(i[4]), strList)

    return x,y,z


if __name__=='__main__':

    import os

    os.chdir(os.getenv('HOME') + '/Desktop')

    f = open('data.txt', 'r')

    x, y, z = NumList(f)

    print 'x =',x

    print 'y =',y

    print 'z =',z

"""


"""

# Q7) N! (팩토리얼) 을 계산하는 함수 fact를 재귀적 함수로 만들어라. 


def fact(num):

    if num==1:

        return 1

    return num * fact(num-1)


if __name__=='__main__':

    print fact(5)

"""


"""

# Q8) 리스트의 구조를 변경하지 말고 리스트의 값을 바꾸는 함수를 작성하고 시험하라.

# 예를 들어, [3,2[3,[3],[4]]] 에서 3을 5로 바꾼다면 [5,2,[5,[5],[4]]] 결과가

# 나와야 한다. (재귀적 프로그래밍)


def ChangeValue(listVal):

    for i in range(len(listVal)):

        if listVal[i] == 3:

            listVal[i] = 5


        if type(listVal[i]) == type([]):

            ChangeValue(listVal[i])


if __name__=="__main__":

    tmpList = [3,2,[3,[3],[4]]]

    ChangeValue(tmpList)

    print tmpList

"""


'Programming > Python' 카테고리의 다른 글

모듈의 실행 ( __name__ == '__main__' )  (0) 2013.05.01
Module  (0) 2013.05.01
함수 객체의 속성  (0) 2013.04.28
함수적 프로그래밍 - reduce 내장 함수  (0) 2013.04.28
함수적 프로그래밍 - filter 내장 함수  (0) 2013.04.28
Posted by scii
:

파이썬의 특징

Programming/Python 2012. 11. 21. 03:13 |

# 대화 기능의 인터프리터 언어

-> 파이썬은 객체지향 기능을 강력히 지원하는 대화형 인터프리터 언어다. 컴파일하고, 실행해 보고, 에러를 고치는 기존의 절차에서 벗어나 작성한 다음 바로 테스트하는 간단한 언어다. 따라서 테스트 과정이 크게 단축된다. 

자바와 같이 바이트 코드를 생성하지만 명시적으로 컴파일할 필요도 없다. 그저 프로그램을 작성하고 수행하면 된다. 그러면 필요한 바이트 코드가 자동으로 생성된다.


# 동적인 데이터 타입 결정 지원

-> 파이썬은 동적으로 데이터 타입을 결정하므로 데이터 타입에 관계없는 일반화된 코드를 작성할 수 있다. 

ex) def add(a, b):

return a+b

이렇게 작성하면 정수, 문자열, 리스트등 자료가 입력되었을 때, 그 자료에 맞는 +메쏘드 (C++의 operator+와 같은 것을 말하는 듯) 를 자동으로 호출한다. 

또한 복잡한 형 선언이나 크기 선언을 해 줄 필요도 없다.


# 플랫폼 독립적 언어

-> 대부분의 운영체제에서 동작한다. 바이트 코드를 생성하므로 소스 코드 없이도 다른 컴퓨터에서 즉시 수행된다.


# 개발 기간 단축에 초첨을 둔 언어

-> 파이썬은 실행의 효율성보다는 개발 기간 단축에 초점을 둔 언어다. 실행 속도로 말하자면 어셈블리 언어를 제외하고는 C에 견줄 만한 프로그래밍 언어는 없다. 

그러나, 실행속도가 조금 느리더라도 개발 기간을 단축할 수 있는 언어를 택할 것이다.  수행 속도 10분을 줄이기 위해 29일을 손해 볼 수는 없는 법.


# 간단하고 쉬운 문법

-> 파이썬은 begin ... end나 { }를 사용하지 않는다. 

들여쓰기(Indentation)로 블럭을 구분한다. 프로그래머들에게 강제적으로 블록에 대한 줄을 일관되게 맞추어 프로그램을 작성하게 함으로써 프로그램의 가독성과 이해도를 높이고 있다.


# 고수준의 내장 객체 자료형 제공

-> 파이썬은 일반적으로 사용되는 리스트(List), 사전(Dictionary),  문자열(String), 튜플(Tuple) 등의 자료 구조를 제공한다. 


# 메모리 자동 관리

-> 파이썬은 쓰레기 수집(Garbage Collection) 기능을 사용하여 필요할 때 메모리를 자동 할당하고 사용이 끝났을 때 자동으로 해제한다. 또한 필요에 따라 메모리를 늘리기도 하고 줄이기도 한다.


# 쉬운 유지 보수

-> 파이썬의 깔끔한 코드는 이해하기 쉬워서 코드의 유지 보수가 용이하다.


# 많은 수의 라이브러리 제공

-> 파이썬은 이미 만들어진 많은 수의 라이브러리를 제공한다. 정규식 매칭부터 네트워킹까지 원하는 웬만한 기능은 이 라이브러리에서 찾을 수 있다. 

또한 서드파티에서 제공하는 수많은 외부 모듈이 있다.


# 짧아지는 코드

-> 파이썬은 일급 함수(First Class Function : 1. 함수 객체를 변수에 저장 가능 2. 함수에서 리턴값으로 사용 가능 3. 함수에 인수로 전달 가능한 함수) 를 지원하며, 다중 상속과 지연 바인딩 기능을 지원하는 객체지향 언어이다. 


# 높은 확장성

-> 파이썬을 일명 접착제 언어(Glue Language)라고도 한다. 다른 언어나 라이브러리에 쉽게 접근해 그들을 사용할 수 있기 때문이다. 가장 보편적인 언어인 C와는 아주 잘 결합된다. 


# 확장(Extending) 및 내장(Embedding) 가능

->  C 등 다른 언어에서 파이썬을 호출할 수 있고, 그 응용 프로그램에 내장시켜 사용할 수 있다.파이썬에서 C 모듈을 호출하는 것도 물론 가능하다.

'Programming > Python' 카테고리의 다른 글

파이썬의 keyword  (0) 2012.11.21
파이썬 환경 변수 설정  (0) 2012.11.21
리눅스에서 스크립트 실행하기  (0) 2012.11.21
파이썬의 요소들  (0) 2012.11.21
Python  (0) 2012.11.21
Posted by scii
:

Python

Programming/Python 2012. 11. 21. 00:52 |

1989년 암스테르담의 귀도 반 로섬(Guido van Rossum)이 개발한 인터프리터 언어. 루비(Ruby), 펄(Perl)과 함께 대표적인 3세대 객체 지향형 스크립트 언어의 하나로서 문법 구조가 간단 명확하고, 언어 코아가 상대적으로 작은 대신 많은 시스템 호출과 풍부한 라이브러리, 윈도 시스템(X11, Motif, Tk, Mac, MFC)에 대한 인터페이스 등을 제공하여 개발·생산·재사용성이 높다. 또한 시스템 언어와 스크립트 언어의 중간 위치 성격과 C, C++를 사용해 새로운 모듈을 쉽게 만들 수 있는 등 다른 언어와 잘 융합되는 특징, 그리고 자유 소프트웨어 운동의 기수로서 다양한 분야에서의 활용이 기대되고 있다.




소프트웨어는 처음 만들어 내는 것보다 그 이후의 유지 보수가 훨씬 더 중요하다는 것을 깨닫는다면 파이썬의 진정한 가치를 느낄 수 있습니다.

- 어느 책의 머리말 중...


python은 1990년 귀도 반 로섬에 의해 첫 선을 보였다. 파이썬은 처음부터 객체지향적으로 잘 설계된 언어이다. 

※ 정확히 python은 1989년 12월 크리스마스를 심심하지 않게 보내려고, 네덜란드 암스테르담에 사는 귀도 반 로섬(Guido van Rossum)이 혼자 집에서 재미삼아 시작한 취미 프로그래밍 프로젝트에서 시작되었다고... 연구실은 닫혔고, 집에 컴퓨터는 있지만 특별히 다른 할 일이라고는 없었던 상황이었다고... 


파이썬은 한마디로 배우기 쉽고, 쓰기 쉽고, 간결하고, 효율적인 언어이다. 머리속에 있는 알고리즘을 명료하고 간단하게 표현하며, 구상한 알고리즘과 실제 구현의 거리를 좁혀 준다. 고수준에서 작성되는 짧고 명료한 코드는 코드 관리의 효율성을 높여 준다. 

버그가 적고 버그를 찾아내기도 쉬우며 누구나 그 코드를 보고 이해하기도 쉽다. 


파이썬을 '접착제(Glue)' 언어라고도 한다. 파이썬의 풍부한 모듈들은 순수한 파이썬 언어로도 개발되지만 C로 만들어진 모듈도 상당수가 있다. 그들 중에는 C 라이브러리를 파이썬에서 가져다 쓰는 경우도 많다. C 라이브러리 중에서 웬만한 좋은 라이브러리는 파이썬에서 사용할 수 있을 정도로 그 수는 늘고 있다.


Python은 C로 설계된 언어이다. 

Jython은 순수한 Java로 구현된 파이썬인데, 놀랍게도 기존의 자바의 모든 클래스를 그대로 사용할 수 있다.


파이썬의 특징

대략 5가지의 큰 장점을 가지고 있다.

1. 쉬운 유지 보수

- 간단명료하고 깔끔한 코드는 이해하기 쉬워서 코드의 유지 보수가 용이하다.

2. 강력함 

- 파이썬의 기초는 C로 이루어져 있다. 그러므로 개발환경 IDLE에서 뼈대는 파이썬으로 나머지는 C로 해도 상관이 없다. 그래서 다른 언어에 비해 쉬우면서도 강력함을 지니고 있다. 

3. 개발 기간 단축 (이익창출의 극대화)

- 파이썬은 실행의 효율성보다는 개발 기간 단축에 초점을 둔 언어다.

4. 무료

- 저작권 등록이 되어 있지만 자유롭게 사용하고 배포할 수 있다. 상용으로 사용할 경우에도 마찬가지. 물론 소스도 공개되어 있다.

5. 플랫폼 독립적 언어

- 리눅스, 유닉스, 윈도우 95/98/NT/2000, 도스, OS/2, Mac OS, Amiga 등 대부분의 운영 체제에서 동작한다. 플랫폼에 독립적이며 컴파일하지 않고도 동작하기 때문에 사용하기 쉽다,




python 언어를 공부하려고 한다. 그런데... 머리말부터 엄청나구만... python 자랑이 1장을 넘어가네~!! 정말 배우기 쉽고 효율적인 언어인가 보다. 이렇게 칭찬 하는것을 보면!!

이렇게 좋은 언어를 만든 귀도 반 로섬님에게 감사를 드립니다. 그리고 이렇게 좋은 언어를 공부하게되서 참 좋다~!!



'Programming > Python' 카테고리의 다른 글

파이썬의 keyword  (0) 2012.11.21
파이썬 환경 변수 설정  (0) 2012.11.21
리눅스에서 스크립트 실행하기  (0) 2012.11.21
파이썬의 요소들  (0) 2012.11.21
파이썬의 특징  (0) 2012.11.21
Posted by scii
: