목록Python (16)
살아가는 이야기
2021년 추석 기념으로 프로그래밍 언어 인기도를 게시한다. 한동안 저장하지 못했던 프로그래밍 언어 인기도를 올해는 생각이 나서 측정해 보았다. 최근 게시글과 마찬가지로 TIOBE 인덱스(https://www.tiobe.com/tiobe-index/) 기준이다. 작년에 비해 조금 낮아지긴 했지만 아직 C가 부동의 1위이다. Fortran과 Delphi, Visual Basic의 약진이 놀랍다. 이후 50개의 인기 언어는 다음과 같다. 상위 10위 표에 작년 순위가 함께 게시되어 있어서 다행이라고 생각했었는데, 장기간 순위가 별도로 나와 있었다. 그래서 그것도 함께 게시한다. 장기간 순위를 보면 C/C++와 Java의 영향력이 독보적이다. 아직 대세는 C 언어 그룹임을 알 수 있다. 배우기 쉬운 BASIC..
Python 3.x에서도 pip을 업그레이드할 때 오류가 발생하는 경우가 있다. 이런 경우에는 다음과 같이 upgrade하라는 말만 앵무새처럼 반복하게 된다. >python -m pip install --upgrade pip Requirement already satisfied: pip in c:\users\woogyun\appdata\roaming\python\python38\site-packages (20.3.3) Collecting pip Using cached pip-21.2.1-py3-none-any.whl (1.6 MB) Installing collected packages: pip Attempting uninstall: pip Found existing installation: pip 20...
Python 코딩 시 분명 오류 없이 모듈을 작성하였는데, 제목과 같은 오류 메시지가 나온다면 이는 순환 import일 가능성이 높다. A.py의 첫 부분에 import B가 있고 B.py의 첫 부분에 import A가 있으면 다음과 같은 오류가 발생한다. ImportError: cannot import name 'A' from partially initialized module 'B' 여기서 A와 B의 순서는 바뀔 수 있다. 어떤 모듈을 먼저 import하려고 했느냐만 차이일 뿐이다.
Python과 PyCharm 조합을 사용하다가 Python도 버전업, PyCharm도 버전업을 수행한 후에, 예전 Python 코드 실행 시 다음과 같은 오류가 발생했다. unable to load file system codec PyCharm에서 새로 설치된 Python 위치를 찾을 수 없을 때 이런 오류가 발생한다고 한다. 그러면 다음과 같은 과정을 거쳐 PyCharm 프로젝트의 속성을 바꾸어 주면 이 문제를 해결할 수 있다. 1. [File -> Settings...] 메뉴 혹은 [Ctrl+Alt+S] 키를 눌러 프로젝트 속성을 열고 [Project Interpreter]를 선택한다. 2. 대화창 위 쪽의 [Project Interpreter:] 행 오른쪽 끝에 있는 [톱니바퀴 버튼]을 누르고 [A..
Python Exception 계층을 찾아 헤메다, 결국 홈페이지에서 찾았다. 여기 복사해 둔다. BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration +-- StopAsyncIteration +-- ArithmeticError | +-- FloatingPointError | +-- OverflowError | +-- ZeroDivisionError +-- AssertionError +-- AttributeError +-- BufferError +-- EOFError +-- ImportError | +-- ModuleNotFoundError +-- LookupError | +--..
인터넷과 웹이 발전함에 따라 이제 프로그래밍도 웹으로 할 수 있게 되었다. 대표적인 언어에 대해 온라인 컴파일러(인터프리터) 목록을 여기 정리한다.Python: https://repl.it/languages/python3C/C++: http://cpp.sh/Java: https://www.compilejava.net/Prolog: https://swish.swi-prolog.org/기타 다양한 언어: https://tio.run/첫 번째 사이트인 repl.it에는 Python 외에도 상당히 많은 언어를 지원하고 있다. 또 마지막 사이트 tio는 상당히 투박한 사이트이지만 엄청나게 많은 언어를 지원하고 있다.이제 간단한 프로그램은 온라인에서 거의 모두 테스트해 볼 수 있다.
오리타입(duck typing)이란 프로그래밍 언어에서 어떤 대상의 타입 검사를 최대한 늦추는 타입 체계를 말한다. "꽥꽥"거릴 수 있다면 "오리"라고 생각한다는 것인데, 어떤 객체(데이터)가 원하는 연산을 지원하기만 하면 그냥 타입 검사를 통과시키는 방법이다. Python이나 Ruby같은 스크립트 언어에서 주로 채택되고 있는 타입 체계로서 Python 코드 예를 보면 다음과 같다. def sumprod(a, b, m): return (a + b) * m x = sumprod(1, 2, 3) l = sumprod([1], [2, 3], 2) s = sumprod('one ', 'and two, ', 3) print(x) print(l) print(s) 위 예에서 함수 sumprod의 인수 타입은 정해져 ..
Python의 문자열 함수 중에는 strip()이라는 메소드가 있다. 이 메소드는 문자열의 좌우 공백을 제거한 결과를 반환한다. 좌측만 제거하려면 lstrip(), 우측만 제거하려면 rstrip()을 사용한다. 사용법은 다음과 같다. >>> s = ' rock, paper, scissors ' >>> s.lstrip() 'rock, paper, scissors ' >>> s.rstrip() ' rock, paper, scissors' >>> s.strip() 'rock, paper, scissors' >>> s ' rock, paper, scissors ' 그런데 이와 유사한 함수를 C++에서 사용하고 싶으면 어떻게 할까? Boost 라이브러리에 유사 함수가 있다. #include std::string ..