개발지식 아카이브/Python
-
Python segmentation fault 해결방법개발지식 아카이브/Python 2022. 9. 24. 13:51
Python sementation fault는 다양한 상황에서 발생할 수 있다. 1. 코드 상의 문제 (도달할 수 없는 메모리에 액세스 하는 코드를 작성했을 때) 2. 호환되지 않는 패키지 간의 충돌 나의 경우는 2였다. 원래 문제가 없던 코드였는데 특정 라이브러리 (time-decorator)를 install 한 이후부터 갑자기 Segmentation fault 에러가 발생했기 때문에, 코드에서 발생하는 문제는 아니라고 생각되었다. time-decorator에서 참조하는 라이브러리와, 내 프로젝트 안에서 사용하는 특정 라이브러리가 충돌하는 것일 것 같았다. 그 특정 라이브러리가 무엇인지는, 에러메시지를 보고 알 수 있었다. Segmenataion fault 를 던지는 참조 코드를 따라가다 보니, goo..
-
python CONDA 설치해 사용하기개발지식 아카이브/Python 2022. 6. 4. 15:46
Python에서 ANACONDA 사용하기 CONDA 란? 콘다는 언어의 패키지, 의존관계와 환경을 관리하는 툴이다. Python 뿐만 아니라 R, Java 등의 언어도 지원한다. 우리는 왜 콘다가 필요할까? 다음과 같은 상황을 생각해보자. 하나의 로컬 PC에서 개발을 하는데, 어떤 프로젝트는 Python2로 개발하되 어떤 프로젝트는 Python3.8로 개발하고 싶은 니즈가 있을 수 있다. 이럴 때에 CONDA를 사용하면 쉽게 Python 버전을 전환할 수 있다. CONDA의 분류 miniconda Python을 실행하는데 필요한 최소한의 패키지만 포함하는 CONDA이다. 비교적 가볍다는 장점이 있다. anaconda 720 개 이상의 주요 패키지를 한꺼번에 설치해주는 CONDA 이다. miniconda ..
-
Python으로 계산기 구현하기 (Postfix)개발지식 아카이브/Python 2019. 12. 5. 15:01
목차 1. Infix 표기법 2. Postfix 표기법 3. 코드 구현 4. 테스트 케이스 Infix Notation Infix 표기법은 연산 시에 피연산자 사이에 연산자를 배치하는 것이다. a + b처럼 인간이 알아보기 가장 쉬운 형태이다. Postfix Notation Postfix 표기법은 연산시에 피연산자 뒤에 연산자를 배치하는 것이다. 컴퓨터가 인식하기 쉽게 하기 위하여 고안되었다. a와 b를 더하는 연산은 Postfix 라면 a b + 가 된다. Postfix Implementation def cal_by_postfix(exp): s = deque() for e in exp: if e not in operators: s.append(e) elif e == '+': n1 = s.pop() n2 ..
-
[파이썬 Collections API] 파이썬3의 자료구조 컨테이너 모듈개발지식 아카이브/Python 2019. 12. 2. 00:43
개요 파이썬의 collections 모듈은, 파이썬에 내장된 일반 자료형의(dict, list, set, tuple) 컨테이너 타입을 조금 더 발전시킨 형태의 구현체이다. 파이썬 2.7 까지는 네임드튜플, 덱, 카운터, 순서형 딕셔너리, 기본 딕셔너리의 다섯 개의 컨테이너를 구현하고 있었으나 파이썬 3부터는 체인맵, 유저 딕셔너리, 유저 리스트, 유저 스트링 등의 자료구조가 추가되었다. 바로가기 1. namedtuple() 네임드 튜플 2. deque 큐 3. Counter 카운터 4. OrderedDict 순서형 딕셔너리 5. defaultDict 기본형 딕셔너리 6. ChainMap 체인맵 자료형 요약 namedtuple() 다수의 필드 정보를 가지는 데이터를 저장할 때, 클래스의 객체를 생성하여 저..
-
[파이썬] *args, **kwargs를 이용해 메소드 축약 작성하는 법개발지식 아카이브/Python 2019. 9. 24. 14:27
개요 *args와 **kwargs를 사용하면, 비슷한 특성을 가진 많은 인수(Argument)들을 함수로 넘겨줄때 유용하다. 먼저, 넘어오는 인수의 개수를 특정하지 않음으로써 상황에 따라 인수의 개수를 줄일수도, 늘릴수도 있다는 점이 장점이다. 또한, 인수가 너무 많으면 메소드의 가시성이 떨어지기 마련인데 이를 묶어서 배열처리 함으로 코드의 가시성이 좋아진다. 문법 (Syntax) 1.1 *args 파싱 # 메소드 정의 def method(*args): for i in args: //처리 # 메소드 콜 method(arg1, arg2) method(arg1, arg2, arg3, ..., argN) 메소드 정의 단계에서, 같은 특성을 가지는 argument들을 배열으로 받을 수 있도록 '*'을 붙여서 정..
-
[파이썬] 자료구조 Comprehension : 람다형 자료구조 코딩개발지식 아카이브/Python 2019. 9. 22. 19:01
comprehension 란 파이썬에서 iterator 로 매우 간단하게 배열을 만드는 방법이다. 3줄 이상 작성되는 코드를 한 줄로 줄일 수 있다. 리스트를 만드는 법을 소개한 후, 말미에 딕셔너리 작성법도 후술한다. Syntax # list 작성법 새 리스트 = [ expression(item) for item in list if 조건절 ] [예시] 리스트 만들기 1) 조건문 만족하는 element 로 리스트 만들기 new_list = [] list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 기존의 list 리스트에서 짝수만 골라내서 새 리스트에 담고 싶다고 가정해보자. 리스트 컴프리핸션을 사용하지 않으면 아래와 같이 3 줄의 코드로 작성된다. for item in list: if ..
-
[파이썬 주식 분석] 매수 적정 PER 구하기 (당기순이익 증감 예상이용)개발지식 아카이브/Python 2019. 8. 4. 10:36
주식 매수 의사결정 모형 요즘 주식시장에 푹 빠져있다. 자기 전에 침대에 누워서 결산 보고서를 읽으면서 종목 평가하는 게 큰 즐거움인데, (마침 중간 결산 시즌이다.) 고평가 되어있는지, 저평가 되어있는지 판단하기 위해 간단한 코드를 짜 봤다. 어젯밤에 짜서 오늘 아침에 처음 써 봤는데, 한눈에 결과가 정리되니까 투자 판단이 정확하게 된다. 역시 이런 간단 계산은 컴퓨터를 시켜야 한다..ㅎ 물론 코딩 로직과 미래 예측은 전혀 별개의 이야기다. 당기순이익 증가율(여기서는 p)이 예측이 된다면 누구나 벼락부자가 되겠지만... 그걸 모르니까 문제다! 하지만 개중에는 경기의 영향을 덜 받고, 매년 일정 비율만큼 이익이 상승하는 (혹은 유지하는) 업종들이 있다. 그런 종목들은 미래에도 비슷한 추세를 따를 거라고 ..
-
[파이썬/Python] mysql connector 라이브러리로 MySql 연동하기개발지식 아카이브/Python 2019. 7. 24. 14:27
전제 조건 외장 라이브러리의 사전 설치를 요한다. 맥/리눅스 사용자는 콘솔에서 아래의 명령어로 바로 설치하는 것을 권장한다. # MySql 8.0 이상 유저 pip install mysql-connector-python # 하위 버전 pip install mysql.connector Pycharm의 경우 프로그램 안에서 라이브러리 설치도 지원한다. Pycharm - Preference - Project: 프로젝트명 - Project Interpreter 으로 이동, 하단의 + 를 클릭하여 검색, 설치가 가능하다. 코드 전개 import mysql.connector #------------------------------------------------------# mysql_con = None #----..