반응형

python 10

파이썬 클래스 getter, setter와 네임맹글링(name mangling)

getter와 setter의 사용 의미 getter/setter 클래스의 속성값에 직접 접근 막기 위함에 목적이 있습니다. 직접 접근을 막고 정해둔 메소드로만 접근하게 함으로서 메소드의 특성도 얻게되므로 값의 조작이나 값의 검증하거나 제한할 수 있습니다. 파이썬의 getter/setter의 사용법 파이썬에서 getter와 setter는 property 장식자를 사용하여 만들 수 있습니다. 앞으로 제시되는 예제는 3단계를 거쳐 문제점이 수정되어 완성되갑니다. 1단계 - 순수한 getter/setter # getset.py class GetSetTest(): def __init__(self): self.count = 1 def get_count(self): # getter return self.count d..

파이썬 랜덤(random) 모듈로 난수 생성하기

랜덤한 숫자를 뽑아내는 알고리즘은 프로그래머가 따로 만들 필요가 없습니다. 파이썬의 경우는 random모듈을 사용해서 랜덤한 수를 뽑아낼 수 있는데 여기에 사용되는 알고리즘 엔진은 메르센 트위스터(Mersenne Twister) 생성기라는 것입니다. 임의의 값을 뽑아내는 데 이 생성기를 많이 사용하죠. 이것을 의사난수 생성기(Pseudo-random)이라고 하는데 의사라는 말은 가짜라는 뜻으로 추측이 가능하다는 말입니다. 가짜라고 해서 품질이 나쁜건 아닙니다. 메르센 트위스터는 품질이 좋은 의사난수를 생성해 내며 사용자 입장에서는 정말 난수처럼 보입니다. 단지 엄밀히 따지자면 수학적인 계산을 통해서 만들어진 수이므로 f:x->y 처럼 함수관계가 있다는 것 뿐입니다. 저도 잘은 모르지만 난수를 생성하는 엔..

프로그래밍/python 2017.04.23 (1)

파이썬 여러 버전을 설치했을 때 팁

현 시점에서 파이썬으로 개발을 할 때 고려해야할 사항 중에 어떤 버전을 사용할 것인가 결정해야 한다. 2.x버전과 3.x버전을 엄연히 다르다. 일반적으로 버전의 젤 첫 번째 숫자는 호환성에 대한 것이므로 2와 3은 호환성이 없다고 봐야한다. 2.x버전의 경우 향 후 5년간만 지원하고 그 뒤에는 3.x버전만 지원되기 때문에 사실상 2.7버전을 사용해야할 이유는 없다. 그럼에도 2.x 버전이 필요한 이유는 지금까지 사용해왔기 때문에 지금까지 구축되온 구조를 한번에 3.x버전으로 바꾸는 것은 힘들기 때문이다. 파이썬을 사용하다 보면 느끼겠지만 아직까지는 쓸모있는 많은 도구들이 2.7에서 제대로 작동하고 3.x에서는 불완전 또는 작동하지 않는 경우를 많이 봐왔다. 그래서 가끔 2.7에서 개발을 해야할 필요도 생..

프로그래밍/python 2017.03.12 (6)

파이썬(python) 파일 읽기, 쓰기

파이썬에서 파일을 읽는 방법 또한 매우 간단하다. 기본적으로 파일 읽기나 쓰기를 할 경우 파일을 open해야 한다. 파일을 open함수로 열면 해당되는 파일의 파일 디스크립터를 반환한다. 쉽게 말해 해당파일을 다른 파일과 구별하기 위해서 붙이는 번호라고 생각하시면 된다. 또한 파일을 다 사용한 경우 close를 해야 한다. 파일 열기 모드 우리는 단순하게 더블클릭으로 문서파일을 열 수 있다. 하지만 프로그램 내부적으로는 여는 방법에는 몇 가지 방법이 있는데 이것이 열기 모드다. 다음은 C언어에서의 파일 열기 모드인데 파이썬의 경우도 이 모드를 사용한다. r, w, a, r+, w+, a+ 여섯 가지 모드와 옵션으로 t 또는 b가 붙을 수 있다. r : 읽기 모드, 파일 없으면 Error r+: 읽기 또는..

프로그래밍/python 2015.08.23 (4)

파이썬(python) 제어문(if, for, while)

파이썬 제어문은 다른 언어(C언어)와 비슷하지만 가지 특징이 있다. 대표적 특징은 들여쓰기를 한다는 것인데, 들여쓰기를 해서 얻는 이점은 간결함이다. 하지만 개인적으론 들여쓰기는 제어문이 복잡해지면 가독성이 낮아짐을 느낀다. 이건 C언어의 블럭구조에 익숙해져 온 프로그래밍 습관인 한 몫 하는 듯 하다. 또한 들여쓰기는 문장의 배치에 제약을 주는데, 이는 정형화된 구조를 만드는 장점이 있지만, 경우에 따라서 답답함을 느끼기도 한다. 아무튼 파이썬이란 언어 자체가 워낙 간결함을 추구하고, 아주 복잡한 제어문을 사용한다면 어짜피 포퍼먼스가 낮아지기 때문에, C로 부분적인 대체를 하면 되니 불만은 없다. if문 예) - 조건문 끝에 : (콜론)을 사용하자. - 들여쓰기를 하자. - C언어의 else if 문은 ..

프로그래밍/python 2015.07.16 (8)

파이썬(python) 딕셔너리(dictionary)-사전 기초

딕셔너리(Dictionary) 말 그대로 사전, 예를 들어 아주 간단한 사전을 만든다고 생각하면 다음과 같이 만들 수 있다. left:1 center :0 right :2 … :의 왼편의 값은 key :오른편 값은 value라고 한다. 위 출력 결과를 잘 보면 입력한 순서와 다르다는 것을 알 수 있다. 이는 해시(hash)의 특징으로 파이썬의 사전은 해쉬를 이용하는 것을 알 수 있다. 여러 자료형을 키(key)값과 value 값에 넣을 수 있다. 단, 키 값은 고정된 값이므로 리스트나 사전이 올 수 없다. 이유는 해시의 특성상 키 값이 바뀌면, 저장 위치를 새로 바꾸어 주어야 하기 때문에 이 값은 고정 값만 올 수 있는 것이다. value는 다음과 같이 바꿀 수 있다. 다음과 같이 value 값으로 함수..

파이썬(python) 내장 자료형(Data Type) 숫자, 문자열

'자료형', 또는 Data type 또는 Type이라고 한다. 파이썬의 자료형은 매우 단순하고 직관적이다_. C언어의Data Type_들은 같은 숫자라 해도 int, short, unsigned int, unsigned short, float, double long….. 등등 메모리를 얼마나 차지하는지 또는 숫자를 어떻게 표현하는지에 따라 세분화 된다. 이런 세분화된 자료형을 잘 사용하면 성능(performance)를 향상시키지만, 잘 못 사용하면 그 반대의 효과 또는 알 수 없는 오작동, 또는 에러가 발생한다. 32비트 시스템과 64비트 시스템의 자료형의 호환성을 위한 매크로 사용은 당신을 멘붕의 세계로 안내한다.(32비트 시스템의 int는 32bit 64비트 시스템에서의 int는 64비..

프로그래밍/python 2015.07.01 (9)

파이썬 설치와 HelloWorld

그 동안 win32api에 빠져 있느냐 파이썬을 소홀히 했네요. 최근에는 워낙 다양한 언어와 다양한 개발방법이 있고, 예전보다 하드웨어의 성능이 워낙 좋아져서, 완성도 있고 빠른 개발이 빠른 성능보다 더 중요한 위치를 차지하게 되었습니다. 이제 개발 언어는 워낙 다양해지고, 프로그래머들 간 프로그래밍 언어 선호도가 다르기 때문에, 어떤 언어가 좋다 말할 순 없죠. 또 특정 분야에 특화된 언어가 있기 마련이긴 하지만, 하나의 언어가 전체를 아우를 수 없는 시대가 왔습니다. 결국 하나의 언어로는 먹고 살기 힘들죠? ㅎㅎ 아무튼 파이썬을 공부할수록 파이썬은 참 기능이 많은 언어라 생각합니다. 그리고 문법도 직관적이기 때문에, 배우기 쉽다고도 합니다. 근데 배우기 쉽다는 부분은 개인적으로는 동의하지 않습니다. ..

프로그래밍/python 2015.06.29 (3)

파이썬(python) 강좌를 시작하며

파이썬(python)에 대한 자료를 찾는 중 C나 C++ 문법과 비교를 한 자료가 없는 듯 하여, 필자 본인이 파이썬(python)과 C/C++을 비교해 나가며 정리하려 합니다. 나의 베이스 언어는? 우선 시작에 앞서 식상한 이야기지만 모든 언어의 기본은 C/C++이라고 생각하며, 그 생각은 변함이 없습니다. 자신의 기본 베이스 언어를 무엇으로 택하는가 결정하는 것은 중요합니다. 저는 C를 감히 추천 드립니다. C/C++을 추천하는 이유는 다음과 같습니다. 처음 배우기는 어렵지만, C를 어느 정도 다룰 줄 알면 다른 언어들을 쉽게 이해할 수 있고, 빠른 시간 내에 익힐 수 있다. 하지만, 취미로 택한다면 베이스로 python의 선택도 나쁘지 않다고 생각합니다. C언어/C++언어의 기본 문법을 익히는 데는..

프로그래밍/python 2015.06.13 (5)
반응형