Development

· Development
함수형 프로그래밍은 뛰어난 확장성과 안정성을 가지고 있다. 함수형 패러다임을 가져가면서 실무에서 사용할 수준의 커스텀 메서드를 구현하고 싶다면 도움이 될 것 같다. from functional import seq from functional.pipeline import extendfrom typing import TypeVarfrom typing import List, IterableT = TypeVar('T')lst = [1, 2, 3, 4, 5] 01. 기본 메서드 사용하기pyfunctional의 seq을 이용하여 함수형 프로그래밍을 구현하면 다음과 같이 내장된 함수를 기본적으로 사용할 수 있다. # 01. use built-in map, filterrs = ( seq(lst) .map(..
· Development
함수 오버로드: 같은 함수 기능을 유지하면서 다른 타입의 input을 처리하고 싶을 때 from typing import overload@overloaddef func(x: int) -> int: ...@overloaddef func(x: str) -> str: ...def func(x): if isinstance(x, int): return x + 1 elif isinstance(x, str): return x + "1" else: raise TypeError("Invalid type")func(1) # 2func("1") # "11"func(1.0) # TypeError: Invalid type 함수를 리턴하는 함수from typing im..
문제Context를 관리하는 프로토콜을 만들어야 할 때 적절하게 클래스를 구현하는 방법해결with 구문으로 __enter__() __exit__() 메소드를 구현하자코드직접 구현__enter__() : 시작 시 동작 정의__exit__() : 종료 시 동작 정의# Connection Class 구현 from socket import socket, AF_INET, SOCK_STREAMclass LazyConnection: def __init__(self, host, port): self.host = host self.port = port self.sock = None def __enter__(self): if self.sock is None: ..
문제부모 클래스를 상속받은 자식 클래스에서 부모의 메소드를 실행하고자 할 때.해결super()를 사용하여 쉽게 부모 클래스의 함수를 실행하자. 코드좋지 않은 예시. 상속 계층이 깊어질 때, 다중 상속일 경우일 때, 직계 부모 클래스를 지정하여 실행하면 불필요하게 메소드가 실행되는 것을 볼 수 있다. # Tricky initialization problem involving multiple inheritance.# Does NOT use super()class Base: def __init__(self): print('Base.__init__')class A(Base): def __init__(self): Base.__init__(self) print('A...
문제 함수에 인자가 너무 많을 때, 특정 파라미터를 고정하고 함수를 실행시켜야 할 때. 해결functions의 partial()를 써보자.정의된 함수에 인자를 고정한 새로운 함수를 선언하는 방법이다. 코드Sourcepartial 함수는 사용자가 정의한 인자들을 미리 받아놓는다newfunc가 선언될 때 *fargs와 **newkeywords가 override되어 newfunc를 반환한다.이때 newfunc는 callable한 객체를 리턴한다.def partial(func, /, *args, **keywords): # *args, **keywords: 미리 설정해 놓는 파라미터 def newfunc(*fargs, **fkeywords): # *fargs, **fkeywords: 나중에 설정할 파라미터..
pre-commit은 로컬에서 리모트 브랜치에 커밋을 할 때,특정한 룰에 의해 코드를 포맷팅하거나 기타 작업을 자동으로 적용시켜주는 기능이다.  예를 들어 내가 커밋한 코드가 black format을 따른다고 할 때,해당 포맷을 지키지 않은 채로 커밋을 하게되면 자동으로 black format을 적용시켜준다.# AS-IS : 들여쓰기와 공백이 지켜지지 않은 내 코드def add(a, b) :return a+b# TO-BE : pre-commit을 통해 black 스타일을 적용한 코드def add(a, b): return a + b> https://black.readthedocs.io/en/stable/ 가장 간단하게는 Extension을 써서 저장 시 마다 파일에 black format을 자동 적용하는..
디버그는 복잡한 개념이 아니다. 우리가 생각 없이 짠 코드를 교정해주는 작업일 뿐이다. 5를 0으로 나누거나, 변수를 잘못 할당하게 되면 다음 코드로 실행되지 않는다. 이러한 모순을 제거하는 것이 디버깅이다. 총 두 가지 방법을 말할건데, IDE 환경과, 노트북 환경에서 디버깅 방법을 보겠다. 디버깅을 아예 모르는 사람들이 보면 좋을 정도의 포스팅이다. VSCODE IDE 중 가장 대중적인 VSCODE를 기준으로 설명하겠다. 일단 일부러 에러를 내보는 코드를 만들어보자. 지금은 한 눈에 에러가 보이겠지만, 코드가 천줄 만줄이 넘어가면 이 에러가 어디에서부터 시작했는지, 일일이 보기가 까다롭다. 이렇게 파이썬 파일을 적어놓고 우리가 검사해보고 싶은 breakpoint를 지정하면 된다. breakpoint는..
LV.4 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 문제 CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로..
bat_huni
'Development' 카테고리의 글 목록