Python/Utils 13

[Naver Map] 요구사항 별 사용 API 및 기능 정리 등

나중에 네이버 맵 (Naver Map) 관련 API 사용이나 정보가 필요시 때를 위한 정리 주소 정보 검색 으로 위경도 얻기기능 개요 지번, 도로명를 질의어로 사용해서 주소 정보를 검색 검색 결과 주소 목록 및 세부 정보 (위경도 좌표 포함) 네이버 API 문서 (링크)  사용법네이버 클라우드 콘솔에서 application 생성하고 client id (X-NCP-APIGW-API-KEY-ID) 얻기해당 정보를 querystring에 사용요청 URL 예시) GET https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode-js?X-NCP-APIGW-API-KEY-ID=&query=색어: 논현동 15-1>응답으로 주소 정보 및 위경도 좌표 반환 네이버 맵 U..

Python/Utils 2024.07.27

[Utils] 파이썬 반올림 구현 (ft. 사사오입, round 함수 )

반올림 종류 파이썬 round() 반올림 함수는 기본적으로 오사오입의 방식을 따른다. 반올림 종류 사사오입 (Rounding half up) : 4 이하 버림, 5 이상 올림 오사오입 (Rounding half to even) : 5 미만 버림, 5 초과 올림 / 5는 앞자리가 홀수인 경우 올림, 짝수인 경우 버림 => 수를 짝수로 만들어 주는 방식 ex) 35 -> 40 / 25 -> 20 / python의 round() 함수 오사육입 (Rounding half down) : 5 이하 버림, 5 초과 올림 관련 링크 반올림 위키 : https://ko.wikipedia.org/wiki/%EB%B0%98%EC%98%AC%EB%A6%BC python3 round() 함수 링크 : https://docs...

Python/Utils 2024.04.21

[Utils] Custom Pre-commit hook 구현

Custom Pre-commit Hook 구현하기 👉 사용 사례 - API 문서 배포시 자동으로 error 코드가 적힌 html 문서가 같이 만들어 지도록 hook 에 추가 - hook은 (.py) 파일 구현 👉 구현 방법 - repo : local 값 - id와 name 설정 및 entry 로 .py 실행 - language : python 설정 # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: # make error code html - repo: local hooks: - id: make-error-enum-html name: make-error-en..

Python/Utils 2023.06.24

[Python] Datetime 이해 - aware, naive, datetime, timezone 등

Datetime 패키지 이해하기 Python에서 기본적으로 제공하는 Datetime 패키지에 대해 이해해 본다. - Datetime 모듈은 date와 time에 대한 조작을 위해 사용된다. Datetime 모듈 예시 1. naive vs aware - 해당 패키지에서 사용되는 날짜/시간 객체는 timezone 포함 여부에 따라 naive와 aware로 구분된다. - naive : tzinfo 정보를 포함하지 않는 날짜, 시간 객체 - aware : tzinfo, DST(daylight saving time) 정보를 포함한 날짜, 시간 객체 - 활용 1) 들어오는 datetime 값 (aware인지 naive인지)에 대한 형태 정의 - 활용 2) tzinfo 체크 및 시간대 변경 - 활용 3) tzinfo..

Python/Utils 2023.05.29

[Python Utils] 코드 컨벤션 템플릿 셋팅 (pre-commit, black, pycharm)

협업 간 코드 스타일/컨벤션을 맞추기 위해 다음과 같은 간단한 Code Formatter를 설정하였다. 목표 기능 1. git에 코드 push시 자동으로 formatting 체크 및 변경 2. 평소 IDE에서 코드 작성 후 저장시 자동으로 formatting 변경 사용 Tool - pre-commit-hook (pip install pre-commit-hooks) - Black (pip install black) - Pycharm (IDE) 1. pre-commit-hook.yaml 파일 - black을 hook으로 등록 (추가적으로 .flake8, isort 등 등록 가능) # See https://pre-commit.com for more information # See https://pre-comm..

Python/Utils 2023.05.29

[Python Utils] Python 매직메소드 (MagicMethod) 이해하기

매직메소드란? "__Method__" 형태의 인스턴스(객체)가 생성될 때 인터프리터에 의해 자동으로 호출되는 메소드 매직메소드 예시 __init__, __call__, __getattribute__ 등은 모두 매직메소드의 형태로 호출된다. # 1. 기본 MagicMethod class A: def __init__(self): print("A 클래스 __init__ 생성자 매직메소드로 실행됨") # 2. Class를 함수 호출하기, __call__ 매직메소드 class B: def __call__(self, *args, **kwargs): print("B 클래스 __call__ 매직메소드로 호출됨") b = B() b() # 3. '.' 도 __getattribute__ 의 매직메소드 class C: de..

Python/Utils 2022.10.14

[Python Utils] Python 제너레이터 사용

제너레이터 동작 방식 Generator yield 문은 메모리 절약을 위한 기법으로, generator는 iterator를 생성해주고 함수 안에 yield 키워드를 이용해서 데이터를 순차적으로 반환한다. 제너레이터의 이점으로는 메모리 절약 뿐만 아니라, 자연스러운 데이터 흐름 파이프라인으로 구성이 가능하다. (ex. 긴 스트림에 대한 주기적인 처리를 할 때, 특정 단위로 반복이 가능하다.) 제너레이터의 동작방식은 아래와 같다. 예제 코드 #제네레이터 생성 def ex_func1(nums): for i in nums: yield i * i if __name__ =="__main__": generator_ex = ex_func1([1,2,3]) print(next(generator_ex)) # 1 print..

Python/Utils 2022.08.25

[Python Utils] Python Decorator 활용

Python Decorator란? 파이썬 데코레이터란 함수를 수정하지 않고 추가 적인 기능을 더하고 싶을 때 주로 사용 아래 예제 코드를 수행하면 함수 호출 전이나 후에 기능이 동작하게 할 수 있다. def trace(func): # 호출할 함수를 매개변수로 받음 def wrapper(): print(func.__name__, '함수 시작') # __name__으로 함수 이름 출력 func() # 매개변수로 받은 함수를 호출 print(func.__name__, '함수 끝') return wrapper # wrapper 함수 반환 @trace # @데코레이터 def hello(): print('hello') hello() # 함수를 그대로 호출 ##출력 결과 hello 함수 시작 hello hello 함..

Python/Utils 2022.08.25

[Python Utils] Python Type 어노테이션/힌트 (Typing, mypy)

Python Type 어노테이션/힌트가 필요한 이유는? Python은 동적 타입 언어(Dynamic language)로 실행하는 시점에 변수의 타입(Type)을 고려하며 체크하기 때문에 타입 힌팅을 통해 좀 더 방어적인 코드를 작성 할 수 있다. mypy mypy는 정적 타입의 검사기로 실행시 함수에 정상적으로 Type이 맞게 들어오는지 검사 해주는 역할을 한다. # 라이브러리 설치 pip install mypy # 실행 명령어 mypy test.py # test.py def add(a: int, b: int) -> int: # int형 변수 a와 b를 입력받아서 int형 값을 반환 return a + b if __name__ == "__main__": add(1, 2) # 성공 add('h', 3) #..

Python/Utils 2022.08.24

[Python Utils] 코드 컨벤션 (pylint, flake8, pre-commit, mypy)

Pylint 파이썬 코드의 오류를 확인 및 코딩 표준 (PEP8) 을 검사 아래 처럼 Score와 문제가 있는 Line을 출력 해준다. # 라이브러리 설치 pip install pylint # pylint 실행 pylint pre-commit hook git 로컬에서 커밋시마다 주어진 조건에 따라 TEST 해주는 도구 black, isort, pylint, flake8 등... 다양한 code formatter와 style checker들을 차례대로 진행되게 할 수 있다. 설정은 pre-commit-config.yaml 파일로 관리 아래는 pre-commit으로 간단히 black이란 code formatter를 hook으로 거는 것 명령어 $ pip install pre-commit $ pre-commi..

Python/Utils 2022.08.24