기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 functools.partial 함수 완벽 가이드 ⚡

파이썬 functools.partial 함수 완벽 가이드 ⚡

functools.partial은 함수의 일부 인자를 미리 고정하여 새로운 함수를 만들어내는 파이썬의 강력한 기능입니다. 이 기능을 활용하면 코드 재사용성과 가독성을 극대화할 수 있습니다.

파이썬 partial 함수 아이콘

✅ 기본 사용법

partial은 특정 인자를 고정한 새로운 함수를 생성합니다.

from functools import partial

def multiply(x, y):
    return x * y

# y 값을 2로 고정한 새로운 함수 생성
double = partial(multiply, y=2)

print(double(5))   # 10
print(double(8))   # 16

✅ map과 partial 결합

대량의 데이터를 처리할 때도 매우 편리합니다.

from functools import partial

def power(base, exponent):
    return base ** exponent

# 제곱 함수 생성
square = partial(power, exponent=2)

nums = [1, 2, 3, 4, 5]
result = list(map(square, nums))
print(result)  # [1, 4, 9, 16, 25]

✅ GUI 콜백 처리

이벤트 핸들러에서 인자를 넘길 때 자주 사용됩니다.

import tkinter as tk
from functools import partial

def greet(name):
    print(f"안녕하세요, {name}님!")

root = tk.Tk()
btn = tk.Button(root, text="인사하기", command=partial(greet, "홍길동"))
btn.pack()
root.mainloop()

✅ 테스트 함수에서 활용

동일한 함수에 여러 입력값을 고정하여 테스트하기 좋습니다.

def divide(x, y):
    return x / y

safe_divide = partial(divide, y=2)

print(safe_divide(10))  # 5.0
print(safe_divide(7))   # 3.5

⚠️ 주의사항

  • partial기존 함수의 시그니처를 그대로 따르므로, 디버깅 시 어떤 인자가 고정되었는지 주석이나 문서화가 필요합니다.
  • 너무 많은 인자를 고정하면 코드의 직관성이 떨어질 수 있습니다.

요약

  • partial은 함수의 인자를 미리 고정해 새로운 함수를 생성합니다.
  • map, filter, GUI 콜백, 테스트 환경에서 특히 유용합니다.
  • 코드 중복을 줄이고, 함수 재사용성을 크게 높일 수 있습니다.

Icons by Flaticon

댓글

가장 많이 본 글

Icons by Flaticon