본문 바로가기

개발/파이썬

파이썬 Typing 파헤치기 - 심화편 지난 글 '파이썬 Typing 파헤치기 - 기초편'에서는 Typing의 기본적인 내용과 8개의 타입에 대해 다루어봤습니다. 이번 포스트에서는 조금 더 심화된 타입들에 대해 다뤄보도록 하겠습니다. 심화 타입 알아보기 1. tying.Callable[..., ReturnType] 지난 포스트에서 typing.Callable에 대해서 간단하게 다뤄봤습니다. 함수를 인자로 받는 경우에 Callable 타입을 활용하면 된다고 했습니다. def on_some_event_happened(callback: Callable[[int, str, str], int]) -> None: ... def do_this(a: int, b: str, c:str) -> int: ... on_some_event_happen..
파이썬 Typing 파헤치기 - 기초편 동적 언어에서의 타입 검사파이썬은 동적 언어로 잘 알려진 언어입니다. 즉, 변수의 타입을 일일이 명시하지 않아도 되고, 특정 변수의 타입이 중간에 바뀌어도 됩니다. 파이썬과 같은 동적 언어는 C, Java, Rust 등의 정적 언어보다 배우기도 쉽고, 좀 더 빠르게 프로그래밍이 가능하다는 장점이 있습니다. 하지만, 잘못된 타입을 사용하여 예상치 못한 에러를 만들어내고, 이로 인해 프로그램이 망가질 수 있다는 단점도 있습니다. 코드 양이 많아지고 복잡해질수록 잘못된 타입으로 인한 에러를 만날 확률이 높아지겠죠.따라서 최근에는 이런 동적 언어들에도 타입을 명시하고 검사하고자 하는 수요가 늘어나고 있습니다. Javascript계열에서는 Typescript가 많은 인기를 얻고 있으며, 파이썬 같은 경우도 3.5..
AWS Secrets Manager로 쿠버네티스 시크릿(Secret)을 관리해보자 기존에는 시크릿을 그냥 yaml파일로서 생성해서 개인 컴퓨터에 가지고 있었습니다. 이 때는 사내에서 쿠버네티스를 관리하는 사람이 저밖에 없었기 때문에 크게 문제가 되지 않았습니다. 하지만, 어느새 쿠버네티스를 관리하는 팀원이 3명으로 늘어났습니다. 물론 시크릿 파일을 코드 저장소에 올리진 않았지만, 시크릿을 계속 파일로 관리하는 것은 보안적으로도 시스템적으로도 문제가 된다는 판단을 했습니다. 시크릿이 수정될 때마다 관리하는 팀원들에게 계속 공유를 해줘야했고, 누군가 해당 부분을 적용 안 한 상태로 수정사항을 적용할 경우 해당 시크릿이 누락되는 문제가 발생할 수 있었습니다. 이런 상황을 인지하고 AWS의 Secrets Manager를 활용하여 쿠버네티스의 Secret을 동기화할 수 있게하는 작업을 진행했습..
Fast API 업데이트 소식 (0.60.0 ~ 0.64.0) Fast API의 최근 주요 업데이트 소식을 요약해서 알려드립니다. 0.60.2 Async 테스트 관련 문서를 추가했습니다.(#1691) 참고 python-multipart를 설치하지 않고 form 데이터 (Form, File)을 사용할 때 예외를 발생시킵니다. (#1851) 응답을 serialize 해주는 jsonable\_encode의 로직은 단순화하고 개선했습니다.(#1754) Jinja templates 예제 개선 (#1690) 0.61.0 HTTPConnection (Request, Websocket)을 dependency injection할 수 있는 기능을 추가합니다. 이 덕분에 dependencies에서 app의 상태를 공유할 수 있습니다. (#1827) WebSocketDisconnect ..
내 코드를 우아하게 만드는 파이썬 꿀팁 😮 파이썬은 코드를 보다 쉽고 우아하게 작성할 수 있게 도와주는 여러 도구들을 내장하고 있습니다. 오늘은 이중 제가 자주 사용하는 몇 가지를 소개해드리겠습니다. 이러한 도구들을 잘 활용한다면 훨씬 가독성이 높고 우아한 코드를 작성할 수 있습니다. 글이 본의 아니게 꽤 길어졌는데, 코드 위주로 보시고 이해가 되지 않는 부분만 설명을 참고하시면 금방 읽으실 수 있을듯합니다. 😂 f-string f-string은 파이썬 3.6부터 도입된 기능으로서, 문자열의 포맷팅을 쉽게 도와줍니다. 파이썬에 문자열을 만드는 따옴표 앞에 f를 붙여주기만 하면 됩니다. 이렇게 하면 해당 문자열에 {변수명}을 활용하여 바로 해당하는 변수를 문자열에서 사용할 수 있습니다. 예제를 확인해보겠습니다. one = "Hello" two = ..
자주쓰는 명령어로 배우는 Pandas #4 : 데이터 능숙하게 다루기 자주쓰는 명령어로 배우는 Pandas 3편에 이어 4편입니다. 이번 편이 마지막 편입니다! 1편, 2편, 3편에서 작성했던 코드 결과들은 계속 유지되니 직접 실습을 따라 하고 싶으신 분들은 이전 시리즈를 참고해주세요. 지난번 실습까지 잘 따라오셨다면, 아래와 같은 데이터 프레임을 가지고 있으실 겁니다. df.head() 실행결과 참고사항: 이번 포스트에서 보여드리는 대부분의 예시에서는 원본 df를 변경시키지 않기 위해 연산 결과를 다시 df에 지정시키지 않습니다. 연산 결과로 데이터를 변경시키기 위해서는 df = 연산결과구문을 활용해서 원본 데이터를 변경해주시면 됩니다. 데이터 마스킹(Masking) 하기 요즘 코로나 때문에 모두들 마스크를 써서 입을 가리죠? 데이터에서도 일부 데이터를 가린다는 의미로 ..
자주쓰는 명령어로 배우는 Pandas #3 : 데이터 조작하기 자주쓰는 명령어로 배우는 Pandas 2편에 이어 3편입니다. 이번에는 데이터를 조작해보겠습니다. 1편, 2편에서 작성했던 코드 결과들은 계속 유지되니 직접 실습을 따라 하고 싶으신 분들은 이전 시리즈를 참고해주세요. 지난번 실습까지 잘 따라오셨다면, 아래와 같은 데이터 프레임을 가지고 있으실 겁니다. df.head() 실행결과 데이터 요약하기 우선 데이터를 조작하기에 앞서 DataFrame의 데이터를 요약하여 확인하는 방법을 알아보겠습니다. 데이터프레임의 각 컬럼별 타입 확인하기 데이터가 어떤 타입으로 이루어져 있는지 확인이 필요할 때가 있습니다. df.dtypes를 입력하면 데이터프레임의 타입을 확인할 수 있습니다. df.dtypes 아래 실행결과에서 object라고 되어있는 것은 문자열 타입이라고 ..
자주쓰는 명령어로 배우는 Pandas #2 : Index와 Column 조작하기 자주쓰는 명령어로 배우는 Pandas 1편에 이어 2편입니다. 이번에는 Index와 Columns를 직접적으로 조작해보도록 하겠습니다. 1편에서 작성했던 코드 결과들은 계속 유지되니 직접 실습을 따라 하고 싶으신 분들은 1편을 참고해주세요. 지금까지의 데이터프레임은 이렇게 생겼습니다. df.head() 실행결과 Index 조작하기 Index 초기화 기존에 설정된 인덱스를 초기화하려면 reset_index 메소드를 사용하면 됩니다. df = df.reset_index() df.head() 실행결과 Index 설정하기 특정 컬럼을 Index로 설정하고 싶으시다면, 해당 컬럼을 set_index 메소드의 인자로 넣으시면 됩니다. df = df.set_index("username") df.head() 실행결과 ..