nomad-coders님의 영상을 보다가 dataclasses라는 유용한 라이브러리를 알게 되어 정리하게 되었다. 정리한 내용은 공식 문서 (3.11)를 참고하여 작성하였다. 추가로 객체 데이터를 다룰 때 유용하게 사용하고 있는 property도 함께 소개하였다. dataclasses 개념 class Person: def __init__(self, pid, name, age): self.pid = pid self.name = name self.age = age class내에서 __init__을 사용해 필요한 데이터를 저장해두는 아주 전형적인 코드이다. 하지만 받아야 하는 데이터가 많을 경우, 동일한 코드를 반복적으로 작성해야 하는 번거로움이 생긴다. 이럴 때 dataclasses를 사용해 간결하게 작성할..
TOML TOML은 Key:Value 형태로 데이터를 매핑하는 파일 형식이다. JSON이나 YAML과 같이 설정 파일에 주로 사용되는 형식이다. # TOML [user] id = 398 name = "DeneV" [auth] admin = true # JSON { "user": { "id": 398, "name": "DeneV" }, "auth": { "admin": true } } 같은 데이터를 각각 TOML과 JSON으로 표현한 모습이다. 데이터의 구조가 복잡해질수록 TOML이 더 읽기 편하다는 장점이 있다. 추가로 TOML은 JSON과 달리 #으로 주석을 작성할 수 있다는 특징도 있다. TOML에 대해 간단하게 살펴보면 아래와 같이 여러 자료형의 데이터를 저장할 수 있다. string1 = "Hi"..
except* & ExceptionGroup except*와 ExceptionGroup이라는 새로운 문법이 추가되었다. try: raise ExceptionGroup("Group1", [TypeError("a"), ValueError("b")]) except* TypeError as e: print(f"Error: {e!r}") except* ValueError as e: print(f"Error: {e!r}") """ Error: ExceptionGroup('Group1', [TypeError('a')]) Error: ExceptionGroup('Group1', [ValueError('b')]) """ ExceptionGroup을 통해 여러 에러를 동시에 처리할 수 있도록 하는 것이 가능해졌다. exp..
이 글은 기술적으로 어떤 방식이 더 빠른가를 테스트하기보다 실제 많이 사용하는 패턴을 중심으로 어떤 패턴이 속도가 빠른지를 측정해 보았다. 실험 내용 목적: Python_list 또는 Numpy_array의 각 요소에 1을 더한 후 결과를 반환한다. (예: [0, 1, 2, 3] → [1, 2, 3, 4]) 방법: 한 패턴 당 총 3번의 실행 시간을 측정하고 평균값을 구한다. comp_Py_list: 1.042 # list comprehension map_Py_list: 1.432 # list(map(...)) for_Py_list: 1.589 # for i in Py_list add_Np_array: 0.016 # + (operator) def_Np_array: 0.026 # pre-defined 'a..
때로는 Python 코드를 짜는 거보단 Linux 명령어를 사용하면 편리하게 처리할 수 있는 것들이 있다. 그래서 파이썬 스크립트 내에서 쉘 명령어를 실행하는 방법을 알아보았다. 참고로 아래 내용은 Python 3.10에서 테스트한 코드이다. !command 주피터 노트북에서는 ! (느낌표)를 이용해 명령어를 실행할 수 있다. !ls 그런데 이 방법은 주피터 노트북(.ipynb)에서만 가능하다. subprocess subprocess 모듈에는 쉘 명령어를 실행할 수 있는 다양한 방법이 존재하지만 그 중 run 함수가 있다. import subprocess # subprocess.run(명령어) subprocess.run("ls") subprocess.run("ls", cwd="./projectC") 문자..
Python은 asyncio 라이브러리를 활용해 비동기 실행을 지원한다. 하지만 asyncio의 경우, 파이썬 버전에 따라 많은 변화가 있었다. 아래 글에 포함된 코드는 Python 3.9.12를 활용해 코드를 실행해 보았다. 특히 3.7 이전의 버전을 활용한다면 아래 글의 예제 코드가 실행되지 않을 수 있다. import asyncio 동기와 비동기 방식을 간략하게 표현하자면 위 그림과 같다. main 작업이 진행되는 동안 동시에(concurrent) 다른 작업이 진행될 수 있는 것이다. (단, 동시에 처리되는 것이지 병렬적으로 처리되는 것은 아니다.) 코루틴 선언 async은 네이티브 코루틴을 선언하는 방식이다. def로 함수를 선언하는 것과 문법이 동일하지만 def 앞에 async을 붙여 사용한다...