본문 바로가기

파이썬

Python : 네이밍 규칙, 코드 가독성과 유지보수성을 높이는 방법 이미 작성된 코드를 분석하다보면 네이밍 규칙이 잘 지켜지지 않은 코드들을 자주 보게됩니다. 프로그래밍 언어마다 약간씩 네이밍 규칙이 다르기 때문에 이런 실수가 간간히 발생할 수 있습니다. 그래서 오늘은 파이썬의 네이밍 규칙을 정리해 보려고 합니다.  1. 네이밍 규칙이 중요한 이유Python에서 네이밍 규칙은 코드의 가독성과 유지보수성을 높이는 핵심 요소입니다. 일관된 네이밍은 협업과 디버깅을 쉽게 만들어 주며, Python 스타일 가이드(Python Enhancement Proposal 8, PEP 8)를 기반으로 표준화된 코드를 작성할 수 있도록 돕습니다. 2. Python 네이밍 규칙 개요아래는 PEP 8에서 권장하는 주요 네이밍 규칙입니다.  • 변수(variable): 소문자와 밑줄(snake_.. 더보기
Python : Pandas 를 이용한 엑셀 작업 예제 CSV를 읽어 피봇 테이블을 만들고 값에 따라 Color Scale 을 적용하는 업무는 자주 있는 일입니다.  이 블로그에서는 Pandas를 사용하여 위와 같은 복잡한 요건을 처리하는 예제를 작성해 봅니다.요건 :  CSV 파일에는 아래와 같은 컬럼이 있다고 가정합니다. 특정 페이지에 링크된 리소스 파일들(html, css, js 등)의 이름과 최적화 전후 파일크기와 감소량을 보여줍니다.PageName, fileName, before, after, gz_before, gz_after, saving, gz_saving 한 페이지에는 여러 리소스들이 존재하고, 여러 페이지에 공통으로 존재하는 파일들도 많기 때문에 리소스 파일이름(fileName) 으로 그룹핑하여  특정 파일에 어떤 페이지들이 얼마만큼 최적화.. 더보기
Python : NamedTuple 완벽 가이드: 정의부터 활용까지 1. NamedTuple이란? NamedTuple은 Python의 collections 모듈에서 제공하는 클래스의 서브타입으로, 튜플의 장점(불변성과 간결한 데이터 구조)을 유지하면서도 각 요소에 이름을 부여하여 코드의 가독성과 유지보수성을 높여줍니다. 이를 통해 인덱스 번호 대신 이름으로 데이터에 접근할 수 있어 직관적인 코드를 작성할 수 있습니다. 주요 특징:  • 불변성: 일반 튜플처럼 생성 후 변경이 불가능합니다. • 키 접근 지원: 이름으로 데이터 접근이 가능합니다. • 간결한 데이터 구조: 가벼운 클래스처럼 동작합니다. 2. 일반 튜플의 단점 일반 튜플은 인덱스 번호로 데이터를 접근해야 합니다. 이는 데이터의 의미를 파악하기 어렵게 만들고, 코드의 가독성을 저하시킬 수 있습니다. point =.. 더보기
Python: 일급함수(first-class Functions) 개념 정리 1. 일급 함수란?프로그래밍 언어에서 함수가 일급 객체(First-Class Citizen)로 취급된다는 것은, 함수를 변수처럼 다룰 수 있고, 함수에 다른 함수나 데이터를 전달하거나 반환값으로 사용할 수 있다는 의미입니다. 파이썬은 함수형 프로그래밍을 지원하며, 함수 자체를 일급 객체로 취급합니다. 2. 일급 함수의 주요 특징일급 함수로서의 함수는 다음과 같은 특징을 가집니다:변수에 함수 할당이 가능함함수를 다른 함수의 인자로 전달 가능함함수를 다른 함수의 반환값으로 사용할 수 있음데이터 구조에 저장 가능함3. 일급 함수의 특성에 대한 예제 1. 변수에 함수 할당 파이썬은 함수도 하나의 객체로 취급하므로, 함수를 변수에 할당하면 해당 변수를 함수처럼 사용할 수 있습니다.#factorial 예제def f.. 더보기
Python : 데코레이터 정의, 장단점 및 예제 1. Python 데코레이터란 무엇인가?Python 데코레이터는 함수나 메서드를 감싸서 동작을 수정하거나 확장할 수 있는 강력한 도구입니다. 데코레이터는 또 다른 함수를 반환하는 함수로, 주로 @ 표기법을 사용해 함수나 클래스에 적용됩니다. 주요 개념:동작 확장: 기존 코드를 수정하지 않고 새로운 기능을 추가합니다.재사용성: 중복된 로직을 데코레이터로 분리하여 여러 곳에서 재사용 가능합니다.클린 코드: 로직을 분리하여 코드 가독성을 높입니다.예제def my_decorator(func): # 대상함수를 입력값으로 받음 def wrapper(*args): # 대상함수의 입력파라미터를 내부함수를 통해 받음 print("함수 호출 전 작업") func(*args) # 대상함수 호출.. 더보기
Python : 클로저(Closure)에 대한 모든 것 클로저(Closure)는 자신이 선언될 당시의 환경(context)을 기억하는 함수를 말합니다. 클로저는 함수 내부에서 정의된 함수가 외부 함수의 변수에 접근할 수 있는 기능을 제공합니다. 이러한 구조는 데이터 은닉(data hiding)이나 상태 유지(state retention)가 필요할 때 유용하며, 특히 고급 함수형 프로그래밍에서 자주 사용됩니다.데이터 은닉: 외부에서 접근할 수 없는 데이터 캡슐화를 가능하게 합니다.상태 유지: 외부 함수가 종료된 이후에도 변수 상태를 유지할 수 있습니다.코드 간결화: 재사용성과 간결성을 높이는 패턴을 제공합니다.변수의 범위클로저를 이해하기 위해서는 먼저 변수의 범위에 대하여 알고 있어야 합니다.  파이썬에서 변수의 범위는 LEGB 규칙을 따릅니다:Local: 함.. 더보기
Python : Async With - 비동기 컨텍스트 관리자 와 aiohttp 사용가이드 async with는 비동기 컨텍스트 관리자로, 비동기 작업 내에서 자원을 안전하게 관리하고 정리할 수 있도록 돕는 구문입니다. 일반적인 with 문과 유사하지만, 비동기 I/O 작업과 호환되도록 설계되었습니다. 이를 통해 파일이나 네트워크 연결 같은 리소스를 효율적으로 다루면서, 자동으로 리소스를 열고 닫아주는 관리 기능을 제공합니다. 아래 예제는 async with 없이 aiohttp 를 사용하는 예제입니다.  aiohttp 는 Python에서 비동기 HTTP 클라이언트와 서버를 쉽게 구현할 수 있도록 지원하는 패키지입니다.Async With 없이 구현된 예제import aiohttpimport asyncioasync def fetch_data(url): session = aiohttp.Cli.. 더보기
Python : 코루틴(Coroutine) 요약, 사용법, 예제 1. 요약파이썬 코루틴(Coroutine)은 비동기 프로그래밍에서 자주 사용되는 기능으로, 함수가 중단되고 재개될 수 있는 방식으로 설계되었습니다. 코루틴을 사용하면 작업을 중단하거나 다시 시작할 수 있어, 효율적인 비동기 처리와 리소스 절약이 가능합니다. 특히, 데이터 파이프라인과 이벤트 기반 프로그래밍에서 유용하게 쓰이며, 파이썬 asyncio 모듈과 함께 비동기 I/O 작업을 효율적으로 처리하는 데 활용됩니다. 2. 개념코루틴은 전통적인 함수와 달리 호출자와 양방향으로 데이터를 주고받을 수 있는 함수입니다.  단일 쓰래드를 사용하여 스택을 기반으로 비동기 작업을 수행시킵니다.  코루틴은 제너레이터(generator)와 유사하게 yield 를 사용하기도 하지만, 3.5버전 이후부터는 주로 await와.. 더보기