SW개발/Python
-
pyinstaller error (matplot lib 버전 문제)SW개발/Python 2020. 12. 3. 21:55
pyinstaller --onefile main.py로 실행파일을 생성할 때 다음과 같은 에러 메세지가 나왔다. 37342 INFO: Matplotlib backend "nbAgg": ignored No module named 'IPython' 39665 INFO: Matplotlib backend "Qt4Agg": ignored Failed to import any qt binding 41817 INFO: Matplotlib backend "Qt4Cairo": ignored cairo backend requires that pycairo>=1.11.0 or cairocffiis installed 44254 INFO: Matplotlib backend "Qt5Agg": ignored Failed to i..
-
Python 숏코딩을 위한 팁 정리SW개발/Python 2020. 1. 23. 22:23
** Python 강의를 기반으로 추후 기억해두고 싶은 내용을 정리한 문서입니다. 숏코딩을 위한 수업은 아니었지만 python 문법 강의에서 도움이 되었던 부분들을 정리했습니다. 1. look up table 활용하기 룩업테이블을 사용하는 것은 런타임에 계산하지 않고 미리 배열로 저장해둔 것을 활용하는 방식입니다. 예를 들어, 학생 성적을 구할 때 90~100 점은 A, 80~89점은 B, 70~79점은 C... 이런식으로 성적을 매긴다면, 이를 if문으로 일일히 나누지 않고 룩업 테이블을 만들어 활용할 수 있습니다. (참고) 인생의 절반 손해봤어요 def get_grade(score): return "FFFFFFDCBAA"[score//10] get_grade(91) + 딕셔너리를 활용하여 룩업 테이블..
-
Python 프로파일링SW개발/Python 2019. 4. 11. 19:10
Python 코드에서 실행이 오래 걸리는 부분을 알기 위해, cmd창에서 line_profiler를 설치한다. (cmd를 관리자 권한으로 실행해야 하며, 혹시 관리자 권한으로 실행하지 않은 경우 --user를 뒤에 붙여주면 설치된다.) >> pip install line_profiler 라인 프로파일링을 하기 위해서는 해당 부분이 함수화되어있어야하기 때문에 전체 코드를 함수 안에 넣었다. 다음은 예시 코드이다. 원하는 함수 위에 @profile을 추가해준다. @profile def main(): # 소수 미리 찾아두기 check = [False] * 1000001 check[0] = True; check[1] = True # 에라토스테네스의 체 for start in range(2, 1000000): f..
-
파이썬에서 리스트를 함수 인자로 받는 경우 - 전역 변수의 문제SW개발/Python 2019. 2. 23. 15:28
02/22 파이썬 함수인자로서의 리스트의 문제 해결방안 N-Queens 문제를 해결하기 위해 리스트를 함수의 인자로 받다가 재귀 함수를 작성했음에도 불구하고 DFS가 제대로 작동하지 않는 것을 발견하였다. 디버깅을 한 결과, DFS로 상태 공간 트리의 가장 아래까지 진입했을 때, 그 위의 상태로 되돌아올 때 이전에 인수로 넣어준 리스트를 활용하는 것이 아니라 현재 변경된 상태의 리스트를 활용하는 것을 발견하였다. => 이 문제는 파이썬에서 리스트를 넘겨줄 때, 값으로 넘겨주는 것이 아니기 때문이다! 파이썬에서 함수인자로서의 리스트는 다음과 같은 문제가 발생한다. alist를 함수인자로 받은 것임에도 불구하고, 함수 밖에 존재하는 alist까지 변경되었다. 이를 해결하기 위해서는 깊은 복사를 해야 한다. ..