파이썬 세션 수업날 4일차
함수
- 특정 기능을 수행하는 코드 블록
- 일종의 '기능 단위'
- 코드 재사용성 증가
- 코드 가독성 향상
- 유지 보수성 개선
- 정의(def 키워드 사용)
def 함수이름(매개변수1, 매개변수2, ...):
# 함수가 수행할 문장들
# ...
return 반환값
- def 키워드 뒤 함수 이름 작성
- 괄호 안에 매개변수(parameter) 정의 (생략 가능)
- 내부 코드는 들여쓰기로 구분
- return 문을 사용하여 함수 결과 반환 (생략 가능-> None 반환)
- 매개변수(Parameters)와 인자(Arguments)의 차이
- 매개변수(Parameters): 함수를 정의할 때 함수 내부로 전달받을 수 있는 변수 (함수 선언부에 붙은 이름)
- 인자(Argument): 함수 호출할 때 실제로 넘기는 값 (호출 시 매개변수에 대응하는 실제 데이터를 인자로 전달)
- 반환값
- return 키워드를 만나면 함수는 즉시 종료, 그 뒤의 코드 실행 x
- 0개, 1개 또는 여러 개(튜플 형태로 반환)의 반환값 반환
- 다양한 매개변수 전달 방식
- 기본 매개변수(Default Parameter): 매개변수에 기본값 설정
- 키워드 인자(Keyword Arguments): 함수 호출 시 매개변수 이름을 명시하여 인자 전달
** 기본 매개변수, 키워드 인자, 가변 인자를 통해 유연한 함수 호출 패턴 활용 가
- Docstring(문서 문자열)
- 삼중 따옴표(""")로 작성
- 함수 사용법과 의도 기록
def add(a, b):
"""두 수를 더한 값을 반환하는 함수"""
return a + b
- 지역 변수 vs 전역 변수
- 지역 변수(local): 함수 안에서 선언된 변수
- 전역 변수(global): 함수 밖에서 선언된 변수
** 두 변수는 스코프(scope)가 다르다!!!
1교시 실습 코드 정리:
https://colab.research.google.com/drive/1XkXdPRFQgA9BPCtGdOYIQGQxVGn3ktrG?usp=sharing
모듈
- 파이썬 .py 파일
- .py 파일 안에 함수나 변수를 정의해놓고, 다른 파일에서 이를 가져와(import) 사용 가능
- 모듈 불러오기
- import 키워드 사용
- 특정함수나 변수만 가져오고 싶다면 from 구문 사용
- 모듈 이름에 별칭(alias) 사용 가능
- 파이썬 표준 라이브러리(내장 모듈): 별도 설치 필요없이 기본 제공
- math 모듈: 수학 관련 함수와 상수 제공
- random 모듈: 난수 생성 기능
- datetime 모듈: 날짜와 시간 다루는 기능
- 외부 모듈(서드파티 라이브러리) 설치 및 사용
1. 터미널(명령 프롬프트)에서 pip 명령어 사용
2. 파이썬 코드에서 사용
- 모듈 검색 경로
- 현재 스크립트가 위치한 디렉토리
- PYTHONPATH 환경 변수 통해 설정된 경로
- 파이썬이 설치된 site-packages 디렉토리 (외부 라이브러리)
- 파이썬 표준 라이브러리가 있는 디렉토리
** 해당 경로 중 어디에도 없으면 ModulNotFoundError 발생
- 패키지(Package)와 모듈
- 모듈: 하나의 .py 파일
- 패키지:
- 모듈을 모아놓은 디렉토리
- 모듈들을 계층적으로 관리하기 위해 사용
- __init__.py 파일을 포함한 디렉토리를 하나의 패키지로 인식
- 규모가 커진 프로젝트를 논리적 단위로 더 체계적 관리 가능
- 주의 사항
- 의미 있는 이름: 기능을 쉽게 유추 가능해야 함
- 최소한의 기능 단위로 분리: 관련된 기능끼리 묶어서 관리
2교시 실습 코드 정리:
https://colab.research.google.com/drive/1V0KcVdUMPdVaQS3wv5NohhMkp_uZ2Jx1?usp=sharing
개념 정리
hash()
- 어떤 데이터를 넣으면 그 데이터를 상징하는 고유한 정수(숫자) 값으로 변환해 주는 함수
- 특징
- 지문(Fingerprint) 역할 : 데이터 식별 용도
- 고정된 길이 : 데이터 크기 상관없이 항상 일정 길이의 정수 출력
- 불변성(immutable) 필수 : 불변 자료형(문자열, 숫자, 튜플, 불리언 등) 만 hash() 사용 가능
.append() vs .extend() vs +=
| 구분 | .append(x) | .extend(iterable) | += (In-place) |
| 리스트( [ ] ) | 가능. 요소 하나 통으로 추가 | 가능. 여러 요소를 낱개로 추가 | 가능. 내부 직접 수정됨(Mutable) |
| 튜플( ( ) ) | 불가능. (AttributeError 발생) | 불가능. (AttributeError 발생) | 가능. 수정이 아닌 새 객체 생성 |
| 딕셔너리( { } ) | 가능. d[key]=value 형태로 한쌍식 추가/수정 | 가능. .update({k: v, . . .})로 여러 쌍을 한꺼번에 추가/수정 | 가능. .update()와 동일하게 작동하며 내부가 직접 수정됨. |
얕은 복사 vs 깊은 복사
| 구분 | 얕은 복사(Shallow Copy) | 깊은 복사(Deep Copy) |
| 정의 | 객체의 최상위 레벨만 복사 | 객체 내부의 중첩된 모든 객체 새로 생성 |
| 사용 방법 | list.copy(), [:], dict.copy() | copy.deepcopy(obj) (import 필요) |
| 복사 범위 | 겉만 복사 | 속까지 복사 |
| 내부 객체 공유 | 공유 (내부 리스트 수정 시 둘 다 바뀜) | 공유 X (독립) |
| 메모리 주소 | 바깥쪽 리스트 주소는 다름, 내부 리스트 주소 동일 | 바깥쪽 리스트, 내부의 모든 주소 다름 |
| 쓰는 경우 | - 리스트 안에 숫자, 문자열만 들어있을 때 - 내부 객체 공유해도 상관없을 때 |
- 2차원 리스트( [ [ . . .] ] )나 딕셔너리 안에 리스트가 들어있는 구조일 때 - 원본 데이터가 바뀌면 안될 때 |
26.01.13(화) 할 일
- 데이터 전처리 & 시각화 강의 보기
- 파이썬 연습문제 되돌아보기
- 파이썬 4회차 세션 예제 코드 복습
- 파이썬 4회차 세션 문풀날 심화문제 도전해보기(풀 수 있는데까지라도 해보기)
- sql 알고리즘 코드카타 3개
- sql 복습 문제(시간 있으면..?)
오늘의 회고
특히 오늘 집중도가 좀 떨어졌다. 주말이 끝나고 주를 시작하는 월요일이어서 그런 것 같기도하고 유독 강의가 많았던 것 같기도 하다. 간단한 문제들은 고민해보며 풀어나가는데 어려운 문제들은 푸는 방법조차 감이 안오는 문제들이 있다. 내일 기초 연습문제를 다시 풀어보는 시간을 가지며 지식을 확인하는 시간을 가져야겠다. 코드카타도 슬슬 난이도가 올라가며 푸는데 시간과 노력이 훨씬 많이 들기 시작했다. sql 코드카타는 난이도가 많이 올라가면 갯수를 줄이고 이해 중심으로 바꿔봐야겠다.
'내일배움캠프' 카테고리의 다른 글
| [내일배움캠프] TIL 16일차 26.01.14(수) (0) | 2026.01.14 |
|---|---|
| [내일배움캠프] TIL 15일차 26.01.13(화) (0) | 2026.01.13 |
| [내일배움캠프] TIL 13일차 26.01.09(금) (0) | 2026.01.09 |
| [내일배움캠프] TIL 12일차 26.01.08(목) (0) | 2026.01.08 |
| [내일배움캠프] TIL 11일차 26.01.07(수) (0) | 2026.01.07 |