Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- Cookie
- 오픈소스기반데이터분석
- JavaScript
- Git
- 유노코딩
- node.js
- 중간이들
- HTML
- 방송대컴퓨터과학과
- 방송대
- 엘리스sw트랙
- 파이썬
- 코드잇
- 파이썬프로그래밍기초
- 개발자취업
- 자격증
- redis
- 코딩테스트준비
- nestjs
- CSS
- 프로그래머스
- 99클럽
- mongoDB
- aws
- 코딩테스트
- 데이터베이스시스템
- TiL
- 꿀단집
- 항해99
- Python
Archives
- Today
- Total
배꼽파지 않도록 잘 개발해요
방송대 오픈소스기반데이터분석 - 3강. 데이터 분석을 위한 파이썬 프로그래밍 2 본문
1. 파이썬 문법 요소
2. 함수형 프로그래밍
1. 파이썬 문법 요소
1) 언패킹
- 정의: 시퀀스(리스트, 튜플, 문자열 등)의 요소를 개별 변수로 나누어 할당.
- 문법 형식
변수1, 변수2, ..., 변수n = 시퀀스
변수1, 변수2, *변수n = 시퀀스 # 확장 언패킹
- 활용:
- 함수 반환값 여러 개를 동시에 할당 가능
- 나머지 값들을 *로 묶어 처리 가능
# 기본 언패킹
x, y = (3, 7)
print(x, y) # 3 7
# 리스트 언패킹
r, g, b = [120, 200, 150]
print(r, g, b) # 120 200 150
# 확장 언패킹
first, *middle, last = [1, 2, 3, 4, 5]
print(first, middle, last) # 1 [2, 3, 4] 5
2) 언더스코어
- 의미: 특별한 의미 없이 “무시할 값”을 받거나 반복문에서 필요 없는 변수를 대체할 때 사용.
- 활용:
- 반복문에서 인덱스가 필요 없는 경우
- 언패킹 시 특정 값 무시
# 반복문에서 사용
for _ in range(3):
print("Hello")
# 언패킹에서 무시
student = (2025, "김철수", "컴퓨터과학", 3.9)
_, name, _, grade = student
print(name, grade) # 김철수 3.9
3) 예외 처리 (Exception Handling)
- 예외(Exception): 실행 중 발생하는 오류
- 목적: 프로그램 강제 종료 방지, 사용자 경험 개선, 누수 방지
- 구문: try-except, 필요시 finally 사용
# 기본 예외 처리
try:
num = int(input("숫자 입력: "))
print(10 / num)
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
except ValueError:
print("유효한 숫자를 입력하세요.")
finally:
print("작업 종료") # 예외와 상관없이 실행
- 특징:
- 여러 예외를 개별 처리 가능
- finally: 파일 닫기, 네트워크 종료 등 자원 정리 필수 코드 작성에 유용
2. 함수형 프로그래밍
1) 개념과 특징
- 정의: 절차적·객체지향 프로그래밍 외에, 파이썬이 지원하는 방식
- 특징:
- 데이터 변경 최소화
- 순수 함수(Pure Function) 사용 → 같은 입력이면 항상 같은 출력
- 부작용(Side Effect) 최소화 → 외부 상태 변경 억제
- 장점:
- 코드 가독성 향상
- 디버깅 용이
- 병렬 처리 효율적
2) 람다 함수 (Lambda Function)
- 정의: 이름 없는 익명 함수, 단일 표현식으로 작성 가능
- 특징:
- return 생략 가능 (표현식 결과가 자동 반환됨)
- 즉시 정의해서 사용할 때 유용
# 일반 함수
def add(x):
return x + 5
# 람다 함수
add_lambda = lambda x: x + 5
print(add_lambda(10)) # 15
3) map, filter, reduce
- 반복문 없이 데이터 변환/선별/축소를 수행하는 함수형 프로그래밍 도구
map
- 모든 요소에 함수를 적용 → 새 리스트 반환
nums = [1, 2, 3, 4]
squares = list(map(lambda x: x**2, nums))
print(squares) # [1, 4, 9, 16]
filter
- 조건을 만족하는 요소만 추출
nums = [10, 15, 20, 25]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens) # [10, 20]
reduce
- 누적 연산을 통해 하나의 값으로 축소
- functools 모듈 필요
from functools import reduce
nums = [3, 5, 7]
total = reduce(lambda x, y: x + y, nums)
print(total) # 15
구분 | map( ) | filter( ) | reduce( ) |
작용 방식 | 모든 요소에 함수 적용 | 조건을 만족하는 요소만 선택 | 요소들을 순차적으로 축소 |
입력-출력 관계 | N개의 입력 → N개의 출력 | N개의 입력 → M개의 출력 (M ≤ N) | N개의 입력 → 1개의 출력 |
사용 사례 | 데이터 변환(매핑) | 데이터 필터링 | 누적 연산(합계, 곱 등) |
예시 | 리스트의 각 숫자를 제곱 | 리스트에서 짝수만 추출 | 리스트의 모든 숫자 곱하기 |
요약
- 언패킹: 시퀀스 요소를 변수로 분리, *로 확장 언패킹 가능
- 언더스코어: 불필요한 값 무시, 반복문 변수 대체
- 예외 처리: try-except-finally로 오류 안전 처리
- 함수형 프로그래밍: 순수 함수 기반, 부작용 최소화, 병렬 처리 적합
- 람다 함수: 간결한 익명 함수, 한 줄 정의 가능
- map / filter / reduce: 데이터 변환, 조건 필터링, 누적 축소
728x90
'방송대 컴퓨터과학과 > 오픈소스기반데이터분석' 카테고리의 다른 글
방송대 오픈소스기반데이터분석 - 4강. 데이터의 수집 (0) | 2025.09.19 |
---|---|
방송대 오픈소스기반데이터분석 - 2강. 데이터 분석을 위한 파이썬 프로그래밍 1 (0) | 2025.09.18 |
방송대 오픈소스기반데이터분석 - 1강. 데이터 분석과 오픈소스 (0) | 2025.09.17 |