Python15 pyenv와 poetry 파이썬 프로젝트를 진행할 때 pyenv와 poetry라는 도구를 이용하여 패키지를 관리하는 방법에 대해 알아보겠습니다. poetry 어떤 파이썬 프로젝트를 만들던, 그 안에서 사용하고 있는 모듈과 패키지들이 있습니다. 그리고 해당 모듈이나 패키지들이 사용하고 있는 특정 버전도 있을 테고요. 그러나 만약 다른 사람이 이 프로젝트를 가져와 작업을 계속하고 싶다면 이 프로젝트에 설치된 패키지들의 종류가 무엇이 있는지 알기 쉽지 않을 겁니다. 만약 프로젝트 작업을 위해 설치해야 하는 패키지 이름과 버전이 명시된 문서가 있으면 어떨까요? poetry는 바로 이러한 문서를 제공하고, 문서에 제공된 내용대로 필요한 패키지들을 모두 불러와 한번에 로컬 기기에 설치하는 것을 도와줍니다. pyenv 그럼 프로젝트를 위해 .. 2022. 1. 26. [Python] 디버깅과 로그 여러분들은 어떻게 디버깅을 하시나요? 보통은 코드의 특정 위치에 print()문을 띄워서 데이터의 출력값이나 코드의 흐름을 콘솔에 띄울 수 있는데요, 이것 보다 좀 더 세련되고 정형화된 방법으로 로그를 띄우는 방법에 대해 알아봅시다. 파이썬에서는 logging이라는 모듈을 사용하여 로그를 띄울 수 있습니다. 로거 생성과 레벨 설정 getLogger 함수를 통해서 특정 이름을 가진 로거를 생성할 수 있습니다. 그리고 생성된 로거에 setLevel 메소드를 이용해 로깅의 레벨을 정할 수 있습니다. import logging logger = logging.getLogger("my_log") logger.setLevel(logging.INFO) 로깅의 레벨은 다음과 같이 크게 6단계가 있습니다. Level Nu.. 2021. 12. 16. [Python] 비동기 프로그래밍 비동기 프로그래밍은 동기적 프로그래밍의 반대말인데요, 그럼 동기적 프로그래밍은 뭘까요? 일반적으로 우리가 작성한 코드는 프로세스가 진행됨에 따라 코드상 작성된 작업들을 순차적으로 처리하게 되는데, 하나의 작업을 시작하면 그 작업이 끝날 때 까지 다른 작업을 시작하지 않습니다. 이를 동기적 프로그래밍이라 합니다. 그러나 비동기 프로그래밍은 응답을 기다려야 일이 발생했을 때 기다리지 않고 바로 다음 작업에 착수합니다. 따라서 데이터를 요청하고 응답을 기다리는 스타일의 코드에서 큰 성능을 보일 수 있습니다. 비동기 프로그래밍에 대한 설명을 시작하기 전, 용어들에 대한 정리를 먼저 확실하게 해두겠습니다. 이벤트 루프: 이벤트 루프는 여러 작업들을 돌아가며 하나씩 실행시키는 메인 작업 관리자의 역할을 합니다. 만.. 2021. 12. 7. [Python] 데코레이터 데코레이터란? 데코레이터는 각 함수나 클래스를 둘러싼 후에 둘러쌓인 함수나 클래스에 대해 추가적인 기능을 수행하는 역할을 하는 도구입니다. 간단한 예로 문자열을 전달받아 대문자로 변환하는 함수가 있다고 합시다. def to_upper_case(func): text = func() if not isinstance(text, str): raise TypeError("Not a string") return text.upper() def say(): return "welcome" to_upper_case(say)# WELCOME to_upper_case함수는 문자열 대신 함수를 인자로 받아 해당 함수를 호출해 문자열을 가져와 텍스트를 대문자로 변환합니다. 위 코드를 다음과 같이 작성할 수 있습니다. @to_up.. 2021. 11. 21. [Python] 클래스 구조 단일 책임 원칙(SRP)이라는 원칙 아래 작성된 클래스의 전체적인 구조와, 그 구조의 세부적인 요소들에 대해 알아보겠습니다. 클래스의 구조는 크게 다음과 같이 8가지로 분류 됩니다. 딱히 정해진 순서는 없지만, 이 구조의 순서대로 클래스를 만드는 것을 많이들 권장합니다. 클래스 변수 __init__ 메소드 내장 파이썬 특수 메소드 클래스 메소드 정적 메소드 속성(Property) 인스턴스 메소드 Private 메소드 클래스 변수 상수나 기본 인스턴스 변수로, 클래스의 최상위에 표시합니다. class Employee(Person): POSITION = ("Superwiser", "Manager", "CEO", "Founder") ... __init__ 메소드 클래스 생성자로, 클래스를 호출하는 방법과 클래.. 2021. 11. 16. [Python] 제너레이터 제너레이터를 사용하는 이유 제너레이터는 왜 사용하는 걸까요? 제너레이터를 사용하면 이터러블(iterable) 객체를 생성하여 큰 데이터 집합의 구성요소를 한 번에 하나씩 반환하게 하여, 메모리를 절약할 수 있습니다. 따라서 좀 더 유연하고 메모리 효율적인 코드를 작성할 수 있게 되죠. 제너레이터는 이터레이터이므로 먼저 이터레이터에 대해 간단히 알아본 후, 제너레이터의 사용 예시에 대해 알아보겠습니다. 이터레이터(iterator) 이터레이터는 next 함수 호출 시 계속해서 그 다음 값을 리턴해주는 객체입니다. 리스트를 iter 함수로 감싼 후 간단한 이터레이터를 만들 수 있습니다. lst = [1, 2, 3] lst = iter(lst) next(lst)# 1 next(lst)# 2 next(lst)# .. 2021. 11. 11. 이전 1 2 3 다음