파이썬은 다른 많은 언어와는 달리 변수의 이름과 값 객체가 분리되어 있다. 예를 들어, a = 1 이란 문에서 숫자 1이 변수 a에 저장되는 것이 아니다. 

파이썬에서는 a를 이름, 숫자 1을 객체라고 하며, 두 개념은 분리되어 있다.


그림으로 표현하면 이렇다. 

(이름 a)  -----------------> (객체 1)

즉, 이름 a는 객체 1을 가리킨다. 객체1은 별도의 위치에 존재하고 있는 것이다.


※ 일반적인 컴파일러 언어(소스 코드를 기계어 수준으로 번역해서 실행하는 언어. C언어가 대표적이다.) 는 이름과 객체의 개념이 분리되어 있지 않다. 컴파일러 언어에서의 이름은 번역될 때 실제 메모리 주소로 모두 변환되므로 프로그램을 수행하는 런타임 시점에서는 이러한 심볼의 이름들은 의미가 없다. 

즉, 변수 혹은 객체의 이름은 해당 객체의 주소로 변환된다.


이에 반해서 파이썬과 같은 동적인 자료형을 가지는 언어에서는(대부분의 스크립트 언어) 변수의 생성과 소멸이 언제든지 일어날 수 있기 때문에 이름이 주소로 변환되지 않고 별도의 장소에 이름이 보관된다.

그리고, 이름과 객체와의 관계 정보를 추가로 가지고 있다. 이름이 저장되는 장소를 '심볼 테이블(Symbol Table)' 이라고 한다.



객체의 치환



간단한 테스트를 통해 a의 값을 바꿔서 b,c의 값이 바뀌는지를 확인하면,

공유객체인지 아니면 분리된 객체인지 (참조로 되는지, 복사로 되는지를) 확인할 수 있다.


a[1]의 값만을 변경했는데 b와 c가 같이 변했다. 이 결과는 객체가 공유된다는 뜻이다. 

사실 이름 a는 객체의 레퍼런스를 나타내는 것이므로 b와 c는 동일 객체의 레퍼런스만 저장하고 있는 것이다. 


※ 일반적으로 python에서의 치환은 대부분 레퍼런스에 의해 이루어진다.

만일 객체의 복사를 원한다면 객체에 따른 방법을 적용하거나 일괄적으로 copy 모듈을 이용하면 된다.




python에서 일반적인 변수가 C언어의 pointer 변수와 똑같구나..!!

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

자료형의 종류  (0) 2012.11.25
문자열로 된 파이썬 코드 실행  (0) 2012.11.22
파이썬의 keyword  (0) 2012.11.21
파이썬 환경 변수 설정  (0) 2012.11.21
리눅스에서 스크립트 실행하기  (0) 2012.11.21
Posted by scii
:

keyword.kwlist 를 입력하면 파이썬에서 쓰는 키워드들이 리스트로 쭉 나온다.

그런데, 책에서는 키워드가 29개였는데.. 2.7.2 버전의 파이썬은 키워드가 31개이다.


비교해보니, as 와 with 라는 키워드 2개가 더 생겼다는 것을 확인할 수 있었다. 



with 문은 무슨 파일 I/O와 관련있는 것 같은데.. 책 모두 공부하고 as와 with를 알아봐야겠다

Posted by scii
:

PATH = 실행 파일을 찾는 경로의 모음으로 파이썬이 저장된 디렉토리가 이 환경 변수에 있어야 한다.


PYTHONPATH = 파이썬 모듈을 찾는 경로의 모음이다. 즉, import되는 모듈들을 시스템 디렉토리, 현재 작업 디렉토리 및 이 경로에서 찾는다.


PYTHONSTARTUP = 파이썬 인터프리터를 수행할 때 자동적으로 수행될 파이썬 스크립트 파일을 나타낸다. 매번 사용해야 할 모듈이 있다면 이 변수를 활용하는 것이 좋다.대화형 세션 에서만 동작한다.




윈도우에서는 시스템의 고급탭에서 '환경 변수'를 눌러 설정하면 된다.




리눅스에서는 쉘에 따라 설정 방법에 차이가 있다.

내가 쓰는 것은 bash쉘이므로 bash쉘에 대해서만 기재한다. (참고로 어떤 쉘을 쓰는지는 터미널에서 echo $SHELL 을 입력하면 본인이 쓰는 쉘의 종류가 나온다.)


만약, ~/Desktop/python 디렉토리를 모듈 경로에 추가하고 싶은 경우...


1. 자신의 홈디렉토리에서 .profile 이란 파일을 vim이나 gedit로 연다. 

2. export PATH=/usr/local/bin:$PATH

     export PYTHONPATH=~/Desktop/python

이 문장들을 추가한다.




PYTHONSTARTUP 변수 사용법


만약 .pythonrc 란 파일이 만들어졌다고 하면,


다시 자신의 홈디렉토리로 가서 vi .profile 을 하여 파일은 연다.

그다음, export PYTHONSTARTUP=$HOME/.pythonrc 를 적은 후 저장한다.



위의 것들을 모두 했다면, 마지막으로 터미널에서 source ./.profile 을 입력하여 profile 파일을 갱신시킨다. 


설정을 끝마춘 최종적인 파이썬의 인터프리터의 모습

./pythonrc 파일을 실행시켰고, 내가 지정했던 디렉토리가 path에 추가된 모습이다.

Posted by scii
:

리눅스(혹은 유닉스) 를 사용하고 있다면 파이썬을 명시적으로 실행시키지 않고 스크립트를 수행시킬 수 있다.


#!/usr/bin/python

-> 스크립트가 '#!' 로 시작하면 그것은 스크립트를 해석, 실행할 프로그램의 경로명이 된다. 따라서 파이썬 실행 파일이 있는 정확한 경로를 기술해 주어야 하는데, 이 경로는 환경에 따라 차이가 있을 수 있다.


경로 확인하는 방법은 터미널에서 "which python"을 하면 경로가 나온다.

ex) /uer/local/bin/python


하지만, 두 개 이상의 파이썬 버전이 설치되어 있을 경우 위 명령이 모든 경로를 찾아 주지 않는다. 

대부분의 리눅스 패키지와 함께 설치되는 파이썬은 '/usr/bin/python'에 있으며, 사용자가 설치하는 파이썬의 기본 위치는 대부분 '/usr/local/bin/python' 이다.


#!/usr/bin/python 혹은 #!/usr/local/bin/python 과 같은 라인 대신에 사용할 수 있는 또 다른 좋은 방법은...?

'#!/usr/bin/env pyhon` 이라고 쓰는 것이다. 

이것은 시스템의 path경로를 따라 파이썬을 자동으로 찾아서 수행시켜 주므로 환경에 관계없이 수행할 수 있다.

'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
:

IDLE(Python GUI)

-> 파이썬 표준의 GUI 대화식 인터프리터이다. GUI 부분은 Tcl/tk의 tk를 이용하여 만들어졌다.


Module Docs

-> 원하는 모듈을 쉽게 찾을 수 있는 도구이다.


Python(Command Line)

-> 도스 창에서 수행되는 파이썬 대화식 인터프리터.


Python Manuals

-> HTML 파일 형식의 파이썬 온라인 문서 모음이다. 여러 가지 문서가 있으나 '라이브러리 레퍼런스(Library Reference)' 를 주로 참조하게 된다.

'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
:

파이썬의 특징

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
: