인덱싱(Indexing)으로 각각의 문자를 취할 수 있다.

>>> s = 'abcd'

>>> s[0]

'a'


슬라이싱(Slicing)으로 부분 문자열을 취할 수 있다.

>>> s[1:3]

'bc'

>>> s[:2]

'ab'


슬라이싱의 시작 위치가 생략되면 '처음부터', 마지막 위치가 생략되면 '끝까지'의 의미이다. 둘 다 생략되면, 처음부터 끝까지.


슬라이싱은 세 가지 값을 가질 수 있다. (Start : Stop : Step) 이것을 확장 슬라이스라고 한다. 

시퀀스 자료형인 문자열, 리스트, 튜플에 모두 적용된다. 

생략되었을 경우, start는 0, stop은 자료형의 크기, step은 1의 값을 가진다.


>>> s[::2]    # 2칸 단위로.

>>> s[::-1]    # 거꾸로.


그리고 멤버십 테스트를 이용하여 부분 문자열의 존재를 확인할 수 있다.

>>> 'good' in s    # good이라는 문자열이 s에 존재하냐는 뜻이 된다.


※ 문자열은 값이 변경되지 않는다. 그래서 만약 변경을 하려면 아래와 같이 해야 한다.

>>>s = 's' + [1:]




슬라이싱과 연결을 이용하여 문자열을 변경.





Posted by scii
:

자료형의 종류

Programming/Python 2012. 11. 25. 16:16 |

자료형이란, 컴퓨터로 표현할 수 있는 자료의 종류를 의미한다. 

파이썬에서는 여러 가지의 정보를 저장할 수 있는 자료형을 미리 정해 놓고 있는데, 이를 내장 자료형(Built-in Types)이라고 한다.


※ 파이썬은 다른 언어에서 제공하지 못하는 고수준의 편리한 자료형이 준비되어 있다. 파이썬의 자료형은 강력하여 다른 언어에서는 해야 할 많은 번거로운 작업을 줄여 준다.

대부분의 경우 별다른 자료 구조의 설계 없이, 파이썬에서 제공되는 자료형만 가지고 작업을 충분히 할 수 있다.


파이썬의 내장 자료형 중 중요한 몇가지들


1. 수치 형(Numbers)    - 정수, 롱형 정수, 실수, 복소수 등을 표현.


2. 문자열(Strings)    - 문자들의 모임이다. (내용 변경 불가능)


3. 튜플(Tuples)    - 순서를 가지는 파이썬의 임의 객체의 집합. (내용 변경 불가능)


4. 리스트(Lists)    - 순서를 가지는 파이썬의 임의 객체의 집합.


5. 사전(Dictionaries)    - 순서를 가지지 않는 객체의 집합. 키(key)로 값을 꺼낸다.


6. 파일(Files)    - 파일에 자료를 입/출력하기 위한 객체.


Posted by scii
:

원하는 문자열을 프로그램 실행 중이라도 마음대로 만들 수 있기 때문에 문자열로 표현된 파이썬 코드를 실행하는 것은 유용할 수 있다. 

이런 코드를 실행하는 방법은 몇 가지가 있다.


eval 함수

eval (expression[, globals[, locals]])

여기서 global은 전역 영역 사전, local은 지역 영역 사전이다. 이들 인수는 선택적이다.


eval() 내장 함수는 문자열로 된 파이썬 식(Expression) 을 실행한다.

※ evaluation = "값을 구함" 이란 뜻.


즉, eval('a+10') 는 문자열로 된 a+10의 값을 구한다라는 뜻이 된다.


그리고 식만을 수행할 수 있기 때문에 문(statement)을 실행하려고 하면 SyntaxError 예외가 발생한다.




exec 함수

exec code [ in globals [, locals]]

exec는 문자열로 된 문(Statement) 을 수행한다.


exec 'a = a + 5'    ==> 문자열로 된 'a = a + 5' 이 문을 실행하라. 라는 뜻이 된다.


exec는 여러 개의 문일 수 있다.

여기서 따옴표(')가 연속적으로 3개 들어가면 긴~ 문장을 쓰겠다는 뜻이된다. 테스트 결과, 2개나 4개 이상은 안된다. 꼭 3개만 된다.




Compile 함수

compile (string, filename, kind)

=> 여기서 string은 코드 문자열, filename은 코드 문자열이 저장된 파일명이다. 코드 문자열이 파일에서 읽혀지지 않았다면 <string>이 된다. 

kind는 어떤 종류의 코드가 컴파일되야 하는지 지정한다.

'exec'라면 여러 개의 문들을 컴파일하며, 'eval'이면 하나의 식을, 'single'이면 하나의 대화적 문을 컴파일한다.

※ help(complie) 입력하면 자세히 나옴.


exec나 eval은 문자열로 입력된 코드를 분석해서 파이썬 컴파일 코드로 변환한다. 만일 이러한 코드를 반복적으로 수행하게 되면 변환에 필요한 시간은 크게 늘어나게 된다. 효율적인 수행 방법은 문자열을 파이썬 코드로 한번 변환해 둔 후에, 반복 실행할 때마다 이 코드를 활용하는 것이다. 

compile() 내장 함수는 문자열을 컴파일하여 파이썬 코드를 리턴한다. 



eval은 식만 실행할 수 있다. 그런데 a = a + 1 이 코드 문자열로 되어있다... 이건 문이다.

그런데 실행이 잘~ 된다.

확실치는 않지만 아마도... compile 함수로 파이썬코드로 바꿔주어서 그런 것 같다.



Posted by scii
:

파이썬은 다른 많은 언어와는 달리 변수의 이름과 값 객체가 분리되어 있다. 예를 들어, 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
: