반응형

Python 18

Python decorator(파이썬 데코레이터) functools.wraps 사용하기 / 디버깅 가능한 데코레이터 작성

데코레이터는 감싼 함수가 실행 되기 전과 후에 다른 코드를 실행 할 수 있게하고, 재사용 가능한 빌딩 블록을 정의하며, 그 빌딩 블록으로 다른 함수의 동작을 변경하거나 확장할 수 있는 python의 유용한 기능입니다. 하지만, 단점이 있다면 디버깅이 어렵고 기존(감싸지는) 함수의 메타데이터를 숨겨버리는 단점이 있습니다. 메타 데이터로써 원래 함수명, docstring, 매개변수 리스트는 클로저(closure)에 의해 숨겨집니다. Meta data를 잃어버리는 데코레이터(Decorator) 아래 코드는 인자로 전달 받은 함수(Python에서 함수는 일급 객체) 의 반환 값을 대문자(uppercase)로 변환하여 반환하는 데코레이터(decorator) 를 작성하고, hello_world 메소드를 데코레이터(..

Python 2023.03.08

PEP-3102 Keyword-Only-Arguments / python method 에서 asterisk(별표) 의미 (*, *args, **kwargs)

안녕하세요. 글쓰는 개발자 입니다. Python 개발을 하다보면 종종 보이는 것이 있습니다. 바로, 흔히들 별표라고 부르는 asterisk, * 입니다. Python 개발자라면 누구나 익히 알고 있듯이 곱셉 연산, unpacking 등에 사용되는 것은 물론, *args / **kwargs와 같이 positional / keword arguments 역할도 할 수 있습니다. 그런데 최근 단순 궁금증으로 FastAPI의 APIRouter 구현을 뜯어보던 중 FastAPI에 작성된 mutiple arguments를 받는 method들은 대부분 arguments로 asterisk (*)를 포함하고 있었습니다. '그림1'과 같이 fastapi/routing.py 파일의 APIRouter Class의 add_api..

Python 2023.03.03

FastAPI, Django, Django REST Framework, Flask 비교 - 어떤 프레임워크를 선택해야 할까?

안녕하세요. 글쓰는 개발자 입니다. 약 2년 간 Django 를 사용했던 제가 이번 신규 프로젝트의 프레임워크로 FastAPI를 선택했습니다. 그 과정에서 여러 고민이 있었는데요. 제가 FastAPI 사용 결정을 내리는 동안 Django 와 어떤 것이 다른 지 정리한 것을 소개합니다. Intro Django Dynamic Website 개발을 위한 Fullstack Web Framework 입니다. Fullstack인 만큼 방대한 기능을 보유하고 있습니다. 내장 ORM과 DB migration 덕분에 model을 쉽게 관리 할 수 있습니다. 또한, 높은 보안성 으로부터 cross-site scripting, SQL injecttion 등의 위험으로부터 안전합니다. Instagram 개발에 사용되었을 정도..

Python 2023.03.01

[Solved!] m1 macOS tensorflow error / tensorflow.python.framework.errors_impl.NotFoundError: Graph execution error:

m1 macbook에 anaconda를 설치하고 tensorflow 사용 중 발생한 에러를 기록합니다. 1. 환경 - python version : 3.8 - 가상환경 : conda - 설치 과정 conda env list # 가상환경 목록 확인 conda create --name tf python=3.8 # tf라는 이름의 가상환경을 생성하고 python 3.8 사용 conda activate tf # conda 환경 진입 # M1 chip tensorflow 설치 conda install -c apple tensorflow-deps # tensorflow dependencies 설치 python -m pip install tensorflow-macos python -m pip install tenso..

[Error] SCRAM authentication requires libpq version 10 or above 해결 / M1 Mac

안녕하세요. 글쓰는 개발자 입니다. 최근 기존 제품의 MSA 화 및 재 개발을 위해 설계를 마치고 그 중 Machine Learning 을 담당하는 Server 를 구축하던 중 발생한 Error 와 해결 과정을 간단히 소개하겠습니다. 요약 1. 에러 : FastAPI Server 를 Container로 띄우는 과정에서 발생 psycopg2.OperationalError: SCRAM authentication requires libpq version 10 or above 2. 원인 : m1 based macOS Computer 에서 발생하는 'libpg' error 3. 해결 방법 : Dockerfile 최상단 FROM 영역 '--platform=linux/amd64' 추가 # pull official b..

Python Class Decorator 인자 값 전달 (Django, DRF, 권한 검증)

안녕하세요. 글쓰는 개발자 입니다. Python Decorator 에 관해 찾아보던 중 대부분의 자료가 가장 기본적인 case (인자를 전달하지 않는 함수형 Decorator) 만을 다루기에 다음과 같이 제가 필요로 하는 기능을 만족하는 Decorator 를 소개하고자 합니다. 1. Decorator 가 인자를 받아 올 수 있어야 함 2. Decorator 에 의해 wrapping 되는 method 의 인자로 받아 올 수 있어야 함 Decorator에 대한 Code Sample 만 소개하는 것 보다는 실무에서 제가 '어떤 상황에서 어떤 문제를 해결하기 위해 사용 했는지', 문제를 정의 하고 설계 및 구현에 이르기 까지의 과정을 간단히 소개하며 작성 했습니다. 구현 속에 Decorator 기능을 포함 시켰..

Python 2022.11.22

[Jupyter Notebook] sklearn import error(python package import error)

안녕하세요. 글쓰는 개발자 입니다. 요즘 저는 데이터 사이언티스트가 되기위해 학습 중인데요. 현재 jupyter notebook을 활용해서 학습 중에 있습니다. 오늘은 numpy를 활용한 선형대수를 학습하는데 몇가지 필요한 package 들을 import해야 했습니다. 신기한 것은 Home Directory에서 Jupyter Notebook을 실행하면 문제없이 import 되는 것이 제가 원하는 경로에서 Jupyter Notebook을 실행하고 .ipynb 파일을 생성하면 import가 되지 않는 것이었습니다. scikit-learn package를 import하자 아래와 같은 error가 나타났습니다. --------------------------------------------------------..

[Python] Class(1) - 기본 클래스의 사용, 객체지향(OOP), 생성자

본 포스팅은 패스트 캠퍼스의 [온라인] 데이터 사이언스 스쿨을 수강하며 학습한 내용을 정리한 것입니다. 데이터 사이언스 스쿨 온라인 대학교재보다 상세한 강의자료, 현직 실무자의 노하우까지 모두 얻어가세요 ! 이미 수많은 비전공자들이 데이터 사이언티스트로 커리어 전환에 성공한 바로 그 강의. 데이터 사이언스 스쿨 오프라인 정규 과정을 이제는 온라인에서 만나보세요! www.fastcampus.co.kr 1.class : 클래스 변수와 함수를 묶어놓은 개념 사용방법 변수와 함수가 들어있는 클래스를 선언 클래스를 객체로 만들어서 클래스 안에 선언된 변수와 함수를 사용 # 클래스의 선언 class Calculator: num1 = 1 num2 = 2 def plus(self): return self.num1 + ..

Python/Tutorial 2020.04.03

[Python] 함수(4) - Decorlator, 사용예제

본 포스팅은 패스트 캠퍼스의 [온라인] 데이터 사이언스 스쿨을 수강하며 학습한 내용을 정리한 것입니다. 데이터 사이언스 스쿨 온라인 대학교재보다 상세한 강의자료, 현직 실무자의 노하우까지 모두 얻어가세요 ! 이미 수많은 비전공자들이 데이터 사이언티스트로 커리어 전환에 성공한 바로 그 강의. 데이터 사이언스 스쿨 오프라인 정규 과정을 이제는 온라인에서 만나보세요! www.fastcampus.co.kr Decorlator는 함수에서 코드를 바꾸지 않고 기능을 추가하거나 수정하고 싶을 때 사용하는 문법이다. 아래 코드블럭을 살펴보면, 선언된 함수 a와 b에 code_1과 code_3이 반복되는 것을 알 수 있다. 따라서 함수 c를 선언해 중복되는 code_1과 code_3을 사용할 수 있게끔 하고 중복되지 않..

Python/Tutorial 2020.04.03

[Python] 함수(3) - map, filter, reduce

본 포스팅은 패스트 캠퍼스의 [온라인] 데이터 사이언스 스쿨을 수강하며 학습한 내용을 정리한 것입니다. 데이터 사이언스 스쿨 온라인 대학교재보다 상세한 강의자료, 현직 실무자의 노하우까지 모두 얻어가세요 ! 이미 수많은 비전공자들이 데이터 사이언티스트로 커리어 전환에 성공한 바로 그 강의. 데이터 사이언스 스쿨 오프라인 정규 과정을 이제는 온라인에서 만나보세요! www.fastcampus.co.kr 1. map 순서가 있는 데이터 집합에서 모든 값에 함수를 적용시킨 결과를 출력함 list, tuple의 값을 함수에 적용시킴 map(함수, 순서가 있는 데이터 집합) 형태 사용예제 def odd_even(num): return "odd" if num % 2 else "even" ls = [1,2,3,4] m..

Python/Tutorial 2020.04.03
반응형