rep.py


정규식도 가능하다.


18라인의 __name__은 모듈 내의 내장 변수로 현재 모듈의 이름을 나타낸다. 직접 지정하지 않아도 파이썬이 이러한 이름들을 기본적으로 제공한다. 최상위에서 수행되는 모듈은 이터프리터의 이름인 '__main__' 을 가진다. 

이것은 곧 모듈이 최상위에서 수행되고 있다는 것을 의미한다. rep.py가 다른 모듈에 포함되어 수행되면 이 모듈의 __name__은 'rep' 라는 모듈 이름을 가진다. 

요약하면, python rep.py와 같이 수행하면 18번 이하의 문들이 수행되지만, 만일 다른 파일에서 import rep 와 같이 사용된다면(즉, 최상위 모듈이 아니라면) 18번 이하의 문들은 수행되지 않는다.

따라서, 모든 파일은 자체 수행되는 메인 코드를 가질 수도 있으며, 다른 모듈에 의해 호출되어 필요한 함수만을 제공할 수도 있다. 


실행 결과


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

[File I/O] 지속 모듈  (0) 2013.04.14
표준 입/출력 방향 전환  (0) 2013.04.13
파일 객체 속성들  (0) 2013.03.11
객체의 복사 및 형 변환  (0) 2013.03.08
집합 자료형  (0) 2013.03.07
Posted by scii
:


기본 파일 메소드

 Method

설명 

 file.close() 

 파일을 닫는다. 더 이상 입출력할 수 없게 된다. 

 file.read([size]) 

 원하는 바이트 수만큼 파딜에서 읽어 온다. 인수를 지정하지 않으면 전체 파일을 읽어 온다. 

 file.readline() 

 라인 하나를 읽어 들인다. size가 지정되면 읽을 수 있는 최대 바이트 수가 된다. 

 file.readlines() 

 전체 라인을 readline()을 이요하여 읽어 들인 라인을 리스트에 넣어서 리턴한다. 

 file.write(str) 

 문자열 str을 파일에 쓴다. 

 file.writelines(list) 

 문자열 리스트를 파일에 쓴다. 줄 바꾸기가 자동으로 삽입되지는 않는다. 

 file.seek(offset[, whence]) 

 whence의 기본 값은 0이다. 0이면 시작 기준, 1이면 현재 위치 기준, 2면 끝 기준에서 offset만큼 떨어진 위치에 파일 포인터를 위치시킨다. 

 file.tell() 

 파일의 현재 위치를 리턴한다. 



기타 파일 메소드

 Method

설명 

 file.flush() 

 버퍼가 다 채워지지 않았어도 내부 버퍼의 내용을 파일에 보낸다. 

 file.fileno() 

 file 객체의 파일 기술자(File Descriptor)(정수)를 리턴한다. 

 file.isatty() 

 만일 file 객체가 tty와 같은 같은 장치이면 1 아니면 0을 리턴한다. 

 file.truncate([size]) 

 파일 크기를 지정된 크기로 잘라 버림. 인수를 주지 않으면 현재 위치에서 자른다. 



파일 객체 속성

Method 

설명 

 file.closed 

 file이 close 되었으면 1 아니면 0 

 file.mode 

 파일이 오픈된 모드 

 fjle.name 

 open()할 때 사용된 파일 이름 

 file.softspace 

 1이면 print문을 사용할 때 값 출력 사이에 자동적으로 스페이스가 출력됨. 0이면 스페이스가 자동으로 삽입되지 않음.



임의 접근 파일

파일의 임의의 위치의 내용을 접근하는 임의 접근 모드가 필요할 경우가 종종있다. 이때 필요한 메쏘드들은 다음과 같은 것들이 있다.

seek(n) - 파일의 n번째 바이트로 이동

seek(n, 1) - 현재 위치에서 n바이트 이동(n이 양수이면 뒤쪽으로, 음수이면 앞쪽으로 이동)

seek(n, 2) - 맨 마지막에서 n바이트 이동(n은 보통 음수)

tell() - 현재의 파일 포인터 위치를 돌려줌


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

표준 입/출력 방향 전환  (0) 2013.04.13
파일 입/출력 예제  (0) 2013.03.12
객체의 복사 및 형 변환  (0) 2013.03.08
집합 자료형  (0) 2013.03.07
사전 자료형을 이용한 전화번호부 프로그램  (0) 2013.03.06
Posted by scii
:

파이썬에서 복사는 두 가지 의미가 있다. 하나는 레퍼런스 복사, 또 하나는 실제 객체의 복사이다.


레퍼런스 복사란 객체는 그대로 두고 객체를 참조하는 주소만 복사하는 것이다.

객체 복사란 같은 값을 가지는 객체를 하나 혹은 그 이상 만드는 것이다. 대표적인 예가 슬라이싱이다. (슬라이싱을 이용하면, 완전히 다른 별개의 객체가 된다.)


copy 모듈을 이용한 객체 복사

copy 모듈은 얕은 복사(Shallow copy)를 하는 copy 연산과 깊은 복사(Deep copy)를 하는 deepcopy 연산을 제공한다.

얕은 복사: 복합 객체를 별도로 생성하되 내용은 원래의 레퍼런스로 채운다.

깊은 복사: 복합 객체를 생성하고 내용을 재귀적(Recursive)으로 복사한다.


※ 깊은 복사를 할 때는 객체들이 재귀적인 구조를 가지고 있지 않은가 주의해야 한다. 또한 깊은 복사는 모든 것을 복사해 버리므로 공유되어야 할 자료가 포함되어 있지 않은가 주의해야 한다.



물자열로의 형 변환

객체를 문자열로 변환하려면 다음의 세 가지 방법을 사용할 수 있다.

str() - 문자열로 변환

repr() - 문자열로 변환

`obj` - repr(obj)와 같음


str은 비형식적인 문자열 변환이다. 즉, 보기 좋게 출력될 문자열을 생성한다고 생각하면 된다.

repr은 좀 더 형식적인 문자열 변환이다. 객체의 자료형을 정확하게 문자열로 표현하며, eval로 역표현이 가능하다.




임의의 진수로 변환



10진수에서 2진수로

binary.py


10진수를 2진수로

binary2.py



정수를 콤마가 있는 문자열로 변환

locale 모듈은 나라마다 문화적으로 표현이 다른 것들을 처리할 수 있게 도와준다.


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

파일 입/출력 예제  (0) 2013.03.12
파일 객체 속성들  (0) 2013.03.11
집합 자료형  (0) 2013.03.07
사전 자료형을 이용한 전화번호부 프로그램  (0) 2013.03.06
사전 (Dictionary)  (0) 2013.03.06
Posted by scii
:


리눅스 우분투 12.04 버전 / Python 2.7 버전을 기준으로 설명.


1. Qt creator 를 설치한다.

http://qt-project.org/downloads

이것을 다운받으면 확장자가 bin일 것이다. chmod 755 파일이름 으로 실행되도록 만든다. 그 후 sudo ./파일이름.bin 을 명령하면 설치한다.



2. Qt library 를 설치한다.

http://qt-project.org/downloads

이것을 다운받으면 압축이 되어있다. 압축을 푼 후, 해당 디렉토리로 가서 sudo ./configure 를 명령한다.

Qt 라이브러리 및 그외 함께 제공되는 도구를 빌드하는 것이다.

잘 설치가 되었다면, /usr/local/Trolltech/Qt-4.8.4/ 이곳에 디렉토리가 생성된 것을 볼 수 있다.



※ 만약 "Basic XLib functionality test failed" 가 뜬다면, libxext-dev를 설치해주어야 한다.

sudo apt-get update         //update the package index

sudo apt-get install libxext-dev         //Install libxext-dev package

이것을 설치하고 다시 sudo ./configure를 한다.



모두 되었다면, sudo make 를 명령한다. 시간이 상당히 걸림.

그 다음, sudo make install 명령.



3. PySide 를 설치한다.

http://qt-project.org/wiki/Category:LanguageBindings::PySide 이곳의 Download에 가면 사진과 같이 나타날 것이다.

사진의 붉은 색의 네모칸을 들어가면, 리눅스 별로 설치법이 잘 나와있다. 그것을 보고 따라하면 된다.



4. 마지막으로 Qt를 위한 환경 변수를 설정한다.

$HOME/.profile 파일을 연다.

이 두 줄을 추가해준다.


PATH=/usr/local/Trolltech/Qt-4.8.4/bin:$PATH

export PATH



5. 잘 설치가 되었는지 테스트


Posted by scii
:

집합 자료형

Programming/Python 2013. 3. 7. 00:28 |


set과 frozenset 이라는 집합 내장 자료형이 새롭게 도입되었다. 집합 연산에 필요한 다양한 연산을 수행할 수 있다. set과 frozenset 자료형은 변경 불가능한 값들을 저장하는 순서가 없는 집합적 자료형이다. 

set 자료형은  변경 가능 자료형

frozenset 자료형은 변경 불가능 자료형. 즉, frozenset 은 자신을 변경시키는 연산을 수행할 수 없다.


set 과 frozenset 공통적으로 적용될 수 있는 연산들

 연산

동등한 표현 

내 용 

len(s) 

 

원소의 수 

x in s 

 

멤버쉽 테스트 

x not in s 

 

멤버쉽 테스트 

s.issubset(t) 

s <= t 

s가 t의 부분 집합인가 

s.superset(t) 

s >= t 

포함 집합인가 

s.union(t) 

s | t 

새로운 s와 t의 합집합 

s.intersection(t) 

s & t 

교집합 

s.difference(t) 

s - t 

차집합 

s.symmetric_difference(t) 

s ^ t 

배타집합 

s.copy() 

 

집합 s를 얕은 복사 



set 자료형에만 적용 가능한 연산들

 연 산

동등한 표현 

내 용 

 s.update(t)

s |= t 

 s와 t의 합집합을 s에 저장

s.intersection_update(t) 

s &= t 

 s와 t의 교집합을 s에 저장

s.difference_update(t) 

s -= t 

 s와 t의 차집합을 s에 저장

s.symmetric_difference_update(t)

s ^= t 

 s와 t의 배타집합을 s에 저장

s.add(x) 

 

 원소 x를 s에 추가

s.remove(x) 

 

 원소 x를 s에서 제거. 없으면 keyError 예외 발생

s.discard(x) 

 

 원소 x가 있다면 s에서 제거

s.pop() 

 

 s에서 임의의 원소를 하나 리턴하고 집합에서는 제거. 빈 집합이면 예외 발생

s.clear() 

 

 집합 s의 모든 원소 제거



Posted by scii
:

전화번호부 프로그램

aa.py



C언어로 구현하면 엄청은 아니지만 좀 많이 길어질 것이 소스코드들이 Python으로 구현하니 엄청나게 짧아졌다. 그리고 직관적이다.





함수 레퍼런스를 사전에 저장해 두었다가 함수를 호출하여 적절한 값을 얻는 프로그램

dict_func.py



실행 결과


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

객체의 복사 및 형 변환  (0) 2013.03.08
집합 자료형  (0) 2013.03.07
사전 (Dictionary)  (0) 2013.03.06
Python 스크립트를 실행파일(exe) 로 만들기  (0) 2013.02.25
아으.. 삽질한 가변인자 코드  (0) 2013.02.25
Posted by scii
:

사전은 임의의 객체의 집합적 자료형인데, 자료의 순서를 가지지 않는다. 집합적이라는 의에서 리스트나 튜플과 동일하나, 자료의 순서를 정할 수 없는 매핑(Mapping)형이다. 시퀀스 자료형은 자료의 순서를 정할 수 있어서 정수 옵셋에 의한 인덱싱이 가능했지만, 매핑 형에서는 키(Key)를 이용해 값(Value)에 접근한다. 

사전을 출력하면 어떤 순서에 의해서 입력 값들이 표현된다. 그런, 이런 순서는 고정 된 것이 아니라, 입력 값의 종류의 따라서 이러한 순서는 언제든지 바뀔 수 있다. 왜 이런 구조를 사용하느냐 하면, 키에 의한 검색 속도를 빨리하기 위해서이다. 

참고적으로 전문적인 용어로 설명하면 사전은 내부적으로 해쉬(Hash) 라는 기법을 이용하여 자료를 저장한다. 이 해쉬 기법은 자료의 크기가 증가해도 빠른 속도로 자료를 찾을 수 있게 해준다.


※ 사전을 해보니까 C언어에서의 enum 자료형이 생각이 든다. 


값은 임의의 객체가 될 수 있지만, 키는 변경 불가능(Immutable) 자료형이어야 한다. 예를 들어 문자열, 숫자, 튜플,은 키가 될 수 있지만 리스트, 사전은 키가 될 수 없다.




사전 객체의 메쏘드

사전 구조는 시퀀스 형인 리스트나 튜플과는 다르나, 반복적인 혹은 순차적인 처리르 위하여 때로는 이들 자료형으로 변환해야 할 필요가 있다. 이런 경우 사용되는 사전 D에 대한 주요 메쏘드는 다음과 같다.

D.keys()         사전에서 키들을 리스트로 리턴

D.values()         값들을 리스트로 리턴

D.items()         (key, value) 리스트 리턴

key in D         멤버쉽 테스트, D가 key를 가지고 있으면 True



그 외의 메쏘드

D.clear()         사전 D의 모든 아이템 삭제

D.copy()         사전 복사(shallow copy)

D.get(key [, x])         값이 존재하면 D[key], 아니면 x 리턴

D.setdefault(key [, x])         get과 같으나 값이 존재하지 않을 때, 값을 설정(D[key] = x)

D.update(b)         for k in b.keys(): D[k] = b[k]

D.popitem()         (키, 값) 튜플을 리턴하고 사전에서 항목을 제거한다.

D.pop(key)         key 항목의 값을 리턴하고 사전에서 제거한다.




객체의 심볼 테이블

이름 공간(심볼들이 저장되는 공간)을 가지는 모든 객체는 심볼 테이블을 가진다. 어떤 객체의 심볼 테이블을 얻으려면 __dict__ 속성을 이용한다. 

globals()를 사용하면 전역 영역(모듈 영역)의 심볼 테이블(사전)을 얻는다.

locals()를 사용하면 지역 영역의 심볼 테이블을 얻는다.




사전을 for 문으로 참조하기


Posted by scii
:


Python 2.7 (64Bit) py2exe 설치 파일

py2exe-0.6.9.win64-py2.7.amd64.exe


http://www.py2exe.org/


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

사전 자료형을 이용한 전화번호부 프로그램  (0) 2013.03.06
사전 (Dictionary)  (0) 2013.03.06
아으.. 삽질한 가변인자 코드  (0) 2013.02.25
튜플 (Tuple)  (0) 2013.02.21
파일이름과 경로명 분리  (0) 2013.02.18
Posted by scii
: