본문 바로가기

반응형

진리는어디에/Python

(60)
[Python] C/C++ 연동 'extension' 모듈 들어가며 지난 포스트에서는 C로 만들어진 공용 라이브러리를 파이썬의 ctypes 모듈을 통해 호출하는 방법에 대해 알아 보았다. 이번 포스트에서는 C로 만들어진 공용 라이브러리를 일반 파이썬 모듈 처럼 사용 할 수 있는 방법에 대해 살펴 보겠다. C언어로 파이썬 확장 모듈을 만드는 과정을 요약하면 아래와 같다. 파이썬으로 부터 인자를 넘겨 받아 처리 할 수 있는 C 함수를 작성한다. 모듈의 메소드 정보를 저장하는 PyMethodDef 배열을 생성한다. 모듈 자체의 정보를 저장하는 PyModuleDef 구조체를 생성한다. PyInit_을 가지는 초기화 함수를 정의한다. setup.py 파일을 생성하여 모듈을 빌드한다. 위 과정을 완료하게 되면 C로 작성된 파이썬 모듈이 생성되고, 아래와 같이 일반 파이썬 ..
[Python] C/C++ 연동 'extension' 들어가며 기본적으로 스크립트 프로그래밍 언어인 파이썬은 사용하기 편리한 대신 컴파일 프로그래밍 언어에 비해 성능이 떨어진다. 이 문제에 대한 해결 방법으로 파이썬에서는 C/C++로 작성된 모듈을 파이썬에서 호출 할 수 있도록 하는 'extension'이라는 기능을 제공한다. 이번 시간에는 파이썬에서 C/C++의 함수를 호출하는 방법에 대해 살펴 보겠다. 본 포스트에 대한 다뤄진 프로젝트의 전체 소스 코드는 [여기]에서 확인 할 수 있다. 동적 라이브러리 만들기 파이썬에서 C/C++로 작성된 코드를 모듈로써 사용하기 위해서는 C/C++로 작성된 동적 라이브러리(윈도우의 경우 dll, 리눅스의 경우 so)가 필요하다. 이번 챕터에서는 각 윈도우와 리눅스에서 동적 라이브러를 만드는 방법에 대해 살펴 보도록 하..
[Python] 파이썬 3의 Modern 함수들 본 포스트의 원문은 Bartek Ciszkowski의 Modern Functions in Python 3이다. annotation을 이용해 함수 인자에 타입을 지정하고 mypy를 이용해 타입 검사를 하는 것에 대한 내용이지만 정작 mypy에 대한 설치나 사용 방법들에 대해서는 설명이 빠져 있다. mypy 관련 내용은 포스트 아래에 링크해 두었으니 참고 바란다. 파이썬은 빠르고 효과적으로 작업할 수 있는 언어로 지난 수십 년 동안 번창했습니다. 많은 현대 회사와 마찬가지로 우리 회사도 시스템 스택의 대부분에서 파이썬을 상당히 광범위하게 사용하지만 많은 경우 아직 파이썬 2.7을 계속 유지하고 있습니다. 가혹한 현실이지만 파이썬 2.7은 이미 한물 갔습니다. 솔직히 말해서 - 때가 되었습니다! - 우리는 P..
[Python] 유용하지만 잘 알려지지 않은 고급 트릭 5가지 본 포스트는 Charudatta Manwatkar의 Hidden Gems of Python을 한글로 번역한 내용이다. 요즘 저에게는 재미로 파이썬 문서를 읽는 취미가 생겼습니다. 재미로 무엇인가를 읽을 때에 비로소 우리가 지금까지 놓치고 있었던 "오! 파이썬으로 이런 것도 할 수 있어요?"라고 할만한 흥미로운 것들을 찾는 경향이 있습니다. 1. Function 속성(attribute) 클래스 및 개체의 속성을 설정하는 방법과 유사하게 함수에도 속성을 설정할 수도 있습니다. def func(x): intermediate_var = x**2 + x + 1 if intermediate_var % 2: y = intermediate_var ** 3 else: y = intermediate_var **3 + 1 ..
[Python] 당신이 모를 수도 있는 함수에 대한 4가지 고급 트릭 본 포스트는 Python Land’s deep dive on functions의 내용을 한글로 번역한 내용이다. 기본 파이썬 문법을 이해하고 있는 사람을 대상으로 하지만 각 섹션들마다 자세한 이해에 도움이 될만한 글들을 링크 걸어 두었으니 조금만 노력을 들이면 초보자들도 이해 할 수 있을것이라 생각한다. 하지만 아직 시작 단계이신 분들께는 여전히 어려운 주제일 수 있다. 그런 분들은 이 글과 함께 '파이썬 기초부터 시작하기'를 읽어 볼 것을 권해드린다. 당신은 함수의 키워드 아규먼트를 강제하거나, 함수 데코레이터를 생성하거나, 익명(람다) 함수를 생성하거나, 배열 또는 딕셔너리를 함수의 인수로 언팩(unpack)하는 방법을 알고 있습니까? 본 포스트는 파이썬 함수에 관한 4가지 고급 트릭을 다루고 있습니..
[Python] 파이썬 기초부터 시작하기 - 목차 파이썬 프로그래밍을 하는데 있어서 기본이라 생각되는 부분을 모두 나열하여 정리해 보았다. 단계적으로 파이썬에 대해 이해 할 수 있도록 글의 순서를 구성해 놓았으니 파이썬을 처음 시작하는 분들이라면 처음 부터 차근차근 읽기 권해드린다. 파이썬 소개 Overview 파이썬 코드의 특징 변수와 타입 파이썬 변수의 소개 변수의 타입 변수의 다양한 정보 확인 ctype 모듈을 활용한 변수의 정보 확인 == 와 is 연산자 mutable 변수와 immutable 변수 변수의 삭제 파이썬 정수는 Overflow가 없다? 문자열 이터레이터(iterator)와 이터러블 타입(iterable type) 이뉴머레이트(enumerate) 제너레이터(generator) 시퀀스 데이터 리스트(list) 튜플(tuple) 셑(se..
[Python] 비동기 함수 - asyncio 이번 포스트는 파이썬 기초 강의의 마지막 장으로써 비동기 함수의 개념과 활용 방법에 대해 설명 한다. 비동기 함수는 프로그램의 성능 향상을 위해서는 필수적인 기능이고 마지막 답게 다소 어려운 내용이므로 집중해서 읽도록 하자. 비동기 함수의 개념 본론을 시작하기 전에 우리는 먼저 비동기 함수의 개념에 대해 이해해야 한다. 일반적으로 함수를 호출하게 되면 함수의 처음 부터 진행하다 함수의 끝에 다다르거나 도중에 return문을 만나게 되면 함수는 종료되고, 제어권은 다시 호출자에게 되돌아 간다. 이 경우 호출자는 자신이 호출한 함수가 종료하고 리턴 할 때까지 기다리고, 함수가 리턴 했다는 것은 호출 된 함수의 실행이 완료 되었다는 것을 보장한다. import time def foo() : print('hel..
[Python] 예외 처리(Exception Handling) 파이썬에서 에러를 처리하는 방법은 다양하다. 간단한 처리 방법으로는 함수의 리턴 값을 이용하는 방법이 있다. 하지만 이는 호출자가 에러를 처리하도록 강제할 수 있는 방법이 없는 단점이 있다. 그래서 에러 상황에 대한 처리가 중요한 부분에서는 exception을 사용하여 에러 처리를 강제 할 수 있다. 이번 포스트에서는 파이썬의 예외 처리(exception handling)에 대해 자세히 살펴 보도록 하겠다. None이나 False 리턴 함수 실패 시 None이나 False 또는 다른 미리 약속된 값을 반환하여 함수의 실패를 알린다. 호출자가 반드시 실패에 대한 처리를 할 필요는 없다. 주로 심각하지 않고 무시해도 되는 사소한 에러 처리를 할 때 이런 방식을 사용하면 좋다. def foo(flag) : i..
[Python] 모듈 객체(module object) 이번 포스트에서는 저번 파이썬 모듈에 이어 "모듈 객체(module object)"에 대해 살펴 본다. 이번 장은 코드 작성을 통해 무엇을 만들어 보기 보다는 모듈 객체를 통해 얻을 수 있는 정보들을 알아 보는 위주로 진행 된다. 모듈 객체란 지금 까지 강의에서 파이썬은 모든 것이 객체로 관리 된다고 이야기 해왔다. 모듈은 하나의 객체이며 어떤 함수와 클래스가 모듈 안에 있고 모듈의 이름은 무엇인지, 어떤 파일인지에 대한 정보들을 가지고 있다. 모듈 역시 객체이므로 아래와 같이 주소와 타입, 사이즈 등을 확인 할 수 있다. import mylib import sys print('address :',hex(id(mylib))) print('type :', type(mylib)) # print('size :..
[Python] 모듈(module) 이번 포스트에서는 코드 재사용의 끝판왕 '모듈(module)'에 대해 살펴보겠다. 정확한 사용법을 언급하진 않았지만 지금까지 예제들에서도 이미 많이 써왔던 것이라 큰 거부감은 없을 것이라 생각 한다. 가벼운 마음으로 읽고 넘어 가도록 하자. 파이썬 모듈 임포트 만일 여러분이 어떤 함수를 정말 잘 만들었다고 가정하자. 그럼 이 함수를 다른 파이썬 프로그램에서도 가져다 사용하고 싶은데 어떻게 해야 할까? 지금까지 여러분이 표준 파이썬 모듈을 임포트(import) 했던 것과 똑같이 사용 할 수 있다. 예를 들어 아래와 같이 여러분은 'mylib.py'라는 파이썬 파일을 만들고 그 안에 함수를 작성했다고 가정하자. # file: mylib.py def add(a, b) : return a + b def mul(..

반응형