본문 바로가기

프로그래밍/Python8

Python 함수 위 @ - 데코레이터 란 Python 코드를 보다 보면 종종 함수나 메서드 위에 @ 기호로 시작하는 이상한(?) 줄을 보게 됩니다. 예를 들면 다음과 같은 형태입니다:@my_decoratordef my_function(): ... 이것은 데코레이터(decorator)라는 문법으로, 기존 함수나 클래스의 동작을 수정하거나 확장할 수 있게 해주는 Python의 강력한 기능입니다. 본 글에서는 데코레이터의 개념, 기본 사용법, 자주 쓰는 내장 데코레이터들, 그리고 직접 만드는 방법을 다루려고 합니다. 데코레이터란?데코레이터는 다른 함수를 인자로 받아 새로운 기능을 추가한 뒤 반환하는 함수입니다. 흔히 함수에 어떤 "포장"을 입혀주는 역할을 합니다. 예를 들어, 아래와 같은 데코레이터 함수가 있다고 합시다:def my_decora.. 2025. 7. 15.
Python *args, **kwargs 의미 Python 함수를 보다 보면 아래와 같은 문법이 자주 보입니다.def my_function(*args, **kwargs): 많은 Python 라이브러리나 프레임워크에서 흔하게 등장하며, 가변 인자를 처리할 때 사용하는 매우 유용한 기능입니다.해당 글에서는 *args와 **kwargs의 의미, 사용 방법, 예제에 대해 설명드리겠습니다. *args: 위치 인자를 여러 개 받을 때*args는 임의 개수의 위치 인자(positional arguments)를 튜플 형태로 받아주는 기능입니다.예시: 숫자들을 더하는 함수def add_all(*args): return sum(args)print(add_all(1, 2, 3)) # 출력: 6print(add_all(10, 20, 30, 40)) # .. 2025. 7. 14.
Python expand() 및 repeat() PyTorch에서 모델 학습이나 텐서 조작을 하다 보면 "데이터를 특정 방향으로 늘려야" 하는 상황이 자주 발생합니다. 이럴 때 사용하는 대표적인 함수가 expand()와 repeat()입니다.두 함수 모두 텐서의 크기를 확장하는 데 쓰이지만, 내부 동작 방식은 매우 다릅니다. 본 글에서는 expand vs repeat의 차이와 각각의 쓰임새, 예제, 그리고 주의해야 할 점을 설명합니다. expand()란?expand()는 텐서의 **메모리를 복사하지 않고** 브로드캐스팅 방식으로 차원을 확장하는 함수입니다. 즉, 원래 데이터를 공유한 채로 여러 위치에서 참조만 하도록 만듭니다.import torchx = torch.tensor([1, 2, 3]) # shape: [3]x = x.unsqu.. 2025. 7. 12.
Python squeeze 및 unsqueeze 함수 - view와의 차이 PyTorch에서 텐서의 차원을 다룰 때 매우 자주 사용되는 함수가 squeeze()와 unsqueeze()입니다. 이 두 함수는 텐서의 차원을 제거하거나 추가할 때 사용되며, 딥러닝 모델을 구현할 때 입력 형식을 맞추거나 특정 연산을 위해 매우 자주 등장합니다.이 글에서는 squeeze()와 unsqueeze()의 개념과 사용법을 설명하고, 다른 view 함수와의 차이도 함께 비교합니다. squeeze()란?squeeze()는 텐서에서 크기가 1인 차원을 제거하는 함수입니다. 예를 들어, 크기가 (1, 3, 1, 5)인 텐서를 squeeze() 하면 (3, 5)로 바뀝니다. 아래 예시와 같이 크기가 1인 차원이 자동으로 제거됩니다.import torchx = torch.randn(1, 3, 1, 5)p.. 2025. 7. 12.
Python reshape 함수 - view, flatten과의 차이 데이터 분석이나 딥러닝을 하다 보면 다차원 배열의 형태를 바꾸는 일이 매우 빈번하게 발생합니다. 이때 사용하는 대표적인 함수가 바로 reshape()입니다. 해당 글에서는 reshape 함수의 기본 사용법과 view, flatten과의 차이를 자세히 설명드리겠습니다. reshape 함수란?reshape() 함수는 배열(array)의 데이터를 그대로 두고, 배열의 형태(shape)만 새롭게 바꾸는 함수입니다. 참고로, 이 함수는 Python의 대표적인 배열 라이브러리인 NumPy와 PyTorch에서 공통적으로 사용됩니다!import numpy as npa = np.array([1, 2, 3, 4, 5, 6])b = a.reshape(2, 3)print(b)# 출력:# [[1 2 3]# [4 5 6]] r.. 2025. 7. 11.
Python ArgumentParser 정리 Python에서 스크립트를 작성할 때 사용자가 명령줄에서 인자를 입력할 수 있도록 하는 기능은 매우 유용합니다. 이때 사용하는 표준 모듈이 바로 argparse이며, 그 핵심 클래스가 ArgumentParser입니다. 이 글에서는 ArgumentParser의 내용을 정리하였습니다.ArgumentParser란 무엇인가요?ArgumentParser는 Python 내장 모듈인 argparse의 핵심 클래스입니다. 이 클래스는 명령행에서 입력된 인자(arguments)를 해석(parse)하고, 프로그램에서 이를 쉽게 사용할 수 있게 도와줍니다. 즉, 사용자가 명령줄에서 어떤 값을 입력하면 이를 자동으로 분석해서 변수처럼 사용할 수 있도록 해주는 도구입니다.예를 들어 다음과 같이 실행하는 스크립트를 만들 수 있습.. 2025. 7. 10.