| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 상속
- c++코딩테스트합격자되기
- 스택
- 점프투파이썬
- 11382번
- 제네릭프로그래밍
- 연산자오버로딩
- 다형성
- C++
- 유도클래스
- 포인터
- 데이터사이언스
- 깊은복사
- 참조자
- 코딩테스트
- 코드잇
- python
- 람다식
- 멤버함수로구현
- 기본클래스
- 인프런
- 백준
- STL
- list comprehension
- 얕은복사
- 주피터
- OOP
- 동적바인딩
- OpenCV
- 프로그래머스lv2
- Today
- Total
WjExplor Story
2025.09.26(화) - 1주 2일차 강의 복습 (2) - 파이썬 응용 본문
2025.09.26(화) - 1주 2일차 강의 복습 (2) - 파이썬 응용
더블유제이플로어 2025. 9. 26. 10:54파이썬 응용
내장 함수를 알아보자
print(3)
print() 을 구현하지 않고 파이썬 개발자들이 만들어서 별도의 설치 없이 사용할 수 있는 함수들이 내장 함수이다.
함수와 메서드의 차이를 묻는 사람이 있는데
함수는
print() 혹은 max() # 가장 큰걸 뽑아주는 것
그리고 메서드는
my_list = [1,2,3]
my_list.append(1)
중 append() 같은게 메서드이다.
함수는 독립적인 개념이다.
메서드는 어떤 리스트같은 객체에 종속이 되어있다.
메서드는 종속이 불가능이다.
list 에다가 1을 추가하는것이다.
그래서 객체에 무언갈 하는걸
접근하기위해서 (.) 을 써서 메서드를 쓴다.
독립적으로 쓸수 있는 기능은
바로 쓸 수 있는게 내장 함수이고
람다나 메서드나 사용자가 직접 만든 정의함수가 사용자 지정 함수이다.
모듈이란?
예시를 보여주면 다음과 같다
# 로또 번호 추첨기
import random
random.randint(1,46)
# 값이 1~46까지 안에서 변한다
random 은 내장함수
.py 파일 하나가 모듈
--
math 모듈에서
math 함수를 불러올 수 있고
math 변수를 가지고 올 수 있다.
모듈을 하나 만들어 보자.
--
# calculator.py
# 더하기
def add(x, y):
return x + y
# 빼기
def subtract(x , y):
return x - y
# 곱하기
def multiply(x, y):
return x * y
# 나누기
def devide(x, y):
return x / y
AAA = 530
```
import calculator
calculator.add(3,5) # 8
calculator.AAA # 530
```
---
모듈이 너무 길어서 별칭을 쓴다 as 을 써서 약어를 만든다.
import calculator as c
```
import calculator as c
print(c.add(3,5))
print(c.AAA)
```
한번 쓰면 import 안해도 되는데 프로그램 끄면 다시 import 해야한다
구글 코랩은 몇시간 지나면 다시 import 해야한다
RAM 에 올려온 상태이다.
컴퓨터는 하드디스크 RAM 장치들이 있고
장치가 뭐가 있고 어떤게 올라가는지
성능을 높히기 위해서 하드웨어를 알면
성능 최적화에 도움이 된다.
(**기본적 하드웨어 프로그램 동작 원리)
### 컴퓨터 기본 구조와 프로그램 동작 원리 (도서관과 책상 비유)
컴퓨터의 하드웨어와 프로그램의 관계를 '도서관'과 '책상'에 비유하여 이해하면 쉽습니다.
---
### 1. 주요 하드웨어의 역할
* **하드 디스크 (HDD, SSD) = `도서관`**
* **역할:** 모든 데이터(프로그램, 라이브러리, 코드 파일 등)의 **영구 보관 창고** 역할을 하다.
* 컴퓨터 전원이 꺼져도 내용이 보존됨.
* **특징:** 용량이 크지만, RAM에 비해 속도가 매우 느리다.
* **RAM (메모리) = `책상`**
* **역할:** 현재 실행 중인 프로그램과 데이터를 올려두는 **임시 작업 공간**이다.
* 프로그램이 종료되거나 전원이 꺼지면 내용이 모두 사라짐 (휘발성).
* **특징:** 용량은 작지만, 하드 디스크보다 월등히 빠르다.
* **CPU (중앙 처리 장치) = `나 (작업자)`**
* **역할:** 실제 모든 계산과 명령어 처리를 담당하는 **두뇌**이다.
* CPU는 오직 속도가 빠른 **`책상(RAM)`** 위의 데이터만으로 작업하다.
---
### 2. `import`와 프로그램 실행 과정
1. **프로그램 실행:** `도서관(하드 디스크)`에서 '파이썬 프로그램'과 '내 코드'를 `책상(RAM)` 위로 가져와 펼치는 과정이다.
2. **`import` 명령어:** `도서관(하드 디스크)`의 라이브러리 코너에서 'pandas' 같은 특정 라이브러리를 찾아 `책상(RAM)` 위에 추가로 가져다 놓는 행위이다.
3. **동작 원리:**
* **import를 한 번만 하는 이유:** 한번 `책상(RAM)` 위에 가져온 라이브러리는 프로그램이 끝날 때까지 계속 사용 가능하기 때문이다.
* **프로그램을 끄면 다시 import 해야 하는 이유:** 프로그램을 끄는 것은 `책상(RAM)`을 비우는 것과 같으므로, 다시 실행할 때 `도서관`에서 새로 가져와야 한다.
* **구글 코랩 세션이 만료되는 이유:** 코랩은 '공용 책상'과 같아서, 사용자가 자리를 오래 비우면 관리자가 책상을 치워버린다. 그래서 다시 `import`를 해야 한다.
---
### 3. 성능 최적화와의 관계
"모든 작업은 빠른 `책상(RAM)`에서 처리하고, 느린 `도서관(하드 디스크)` 방문은 최소화한다"는 것이 성능의 핵심 원칙이다.
- **효율적인 코드:** 대용량 파일을 처리할 때, 파일 전체를 `책상(RAM)`에 올리는 대신 한 줄씩 가져와 처리하면 책상 공간을 아끼고 효율적으로 작업이 가능.
- **비효율적인 코드:** 매우 큰 파일을 통째로 `책상(RAM)`에 올리려 하면, 책상이 꽉 차서 시스템 전체가 느려지거나 프로그램이 멈출 수 있다.
이 원리를 이해하면 코드의 데이터 처리 방식을 어떻게 설계해야 성능이 향상될지 예측하는 데 도움이 된다.
---
패키지
파일이 많아지다보면 공통적으로 폴더구조로 관리한다.
파이썬도 마찬가지로 공통 관리를 패키지라고 하고
패키지를 직접 만들어보자.
ABC 폴더 안에
calculator.py , bb.py 를 만들어보자
#bb.py
def hello():
print('안녕하세요')
을 넣어준다.
from ABC import calculator, bb
bb.hello()
---
이렇게 사용이 가능하다
import 뒤에 bb.by 파일 안에 ABC 가 있기 때문에 bb.hello() 를 하면 한다.
파이썬이 모듈을 찾을때는
같은 디렉토리이거나 패키지 폴더 안에서 찾는데
그럴 경우가 아니라면 from 으로 해당 경로를 명시해줘야 한다.
abc로 하면 파이썬 별도의 모듈이 있기 때문에
폴더를 abc 를 쓰지말고 대문자로 변경하면 된다.
---
모듈 안에 있는 함수를 쓸때
from ABC.calculator import add
모듈.함수
로 불러왔는데 이렇게 안해도 된다.
from 폴더 import 모듈
이런 방식도 있는데
from 폴더.모듈 import 함수
이렇게 진행도 가능하다
- from 폴더 import 모듈
- from 폴더.모듈 import 함수
- from 모듈 import 함수
위치와 이름으로 폴더인지 모듈인지 함수인지 확인하기 어렵다.
add 라는 함수를 사용하기 위해서 다양한 방법이 가능하다
from ABC.calculator import add
add(3,5)
from ABC import calculator
calculator.add(3,5)
주의사항은 사용할때는 import 뒤에 값을 사용하면 된다.
import add 이면 add(3,5) 가 가능하고
import calculator 이면 calculator.add(3,5)가 가능하다
import ABC.calculator
이면
사용할때도
ABC.calculator.add(3,5) 로 쓰면 된다.
정리하면은
- from 폴더 import 모듈 #calculator.add(3,5)
- from 폴더.모듈 import 함수 #add(3,5)
- from 모듈 import 함수 #add(3,5)
- import 폴더.모듈 # ABC.calculator.add(3,5)
어떤걸 자주 사용할까?
1,2,3 을 자주 사용한다.
모듈을 통째로 불러오는 경우도 있는데
함수를 불러오면 편의성이 좋아서
import 함수도 많이 사용한다.
---
** 연습하기 **
폴더 이름 : ~
모듈 이름 : ~
함수 이름 : wow
```
def wow():
print("성공했습니다.")
```
wow() 함수 불러오는데 4가지 방식 전부 다 불러오기
(1)
from TT_1 import my_module
my_module.wow()
(2)
from TT_1.my_module import wow
wow()
(3)
from my_module import wow
wow() # my_module.py 를 밖에 만들어서 확인
(4)
import TT_1.my_module
TT_1.my_module.wow()
표준 라이브러리
import os
현재 디렉토리 파일 목록
os.listdir
dir = directory
파이썬이 모듈을 찾을때
찾는데 이 경로 안에 있다면 특별히 경로 지정 안해도 모듈 사용할 수 있다
없다면 from 으로 경로 만들면 된다.
print(os.getcwd()) # 현재 작업 디렉토리
print(os.listdir(".")) # 현재 디렉토리의 파일 목록
/*
/content
['.config', '__pycache__', 'my_module.py', 'ABC', 'TT_1', '.ipynb_checkpoints', 'sample_data']
*/
datetime 은 시간 자료랑 가깝다.
시간 추출도 가능하다.
심화된 datetime 포멧팅은 GPT 등으로 확인해볼것
# datetime 포매팅
today = datetime.datetime.now()
print(today)
print(today.strftime("%A, %B %dth %Y")) # 포맷 코드
---
딥러닝에서 사용
오리지날 파이썬은 라이브러리를 설치해야함
라이브러리란 도서관이란 의미
다른 사람이 만든 코드를 우리가 사용하기 위해서
책을 빌리기 위해서 서드파티 설치해야함
직접 설치는
pip install 라이브러리 이름
터미널 명령어이다
컴퓨터에서 검색창에 CMD 를 검색해서
명령 프롬프트 안에서
pip install 라이브러리 이름
으로 직접 설치를 한다.
구글 코랩에서 설치하려면
셀에
!pip install numpy
로 설치하면 된다.
실기시간에 미션을 하고 미션 이후에 코드잇 프로그램을 진행하도록 한다.
---
파일 읽기 쓰기
1) 파일 열기 모드
- `"w"` : 쓰기(write) 모드
- 기존 파일이 있으면 **내용을 모두 지우고 새로 작성**
- 없으면 새 파일을 만듦
- `"a"` : 추가(append) 모드
- 기존 파일이 있으면 **내용 뒤에 이어서 작성**
- 없으면 새 파일을 만듦
### 2) 기본 문법
```python
f = open("example.txt", "w", encoding="utf-8")
f.write("첫 번째 줄\n") # 문자열을 파일에 씀
f.close() # 파일 닫기 (꼭 필요!
프로그램을 닫지 않고 계속 실행하면 오류가 날 수 있다.
파일이 열려있는 상태가 보여있는 상태가 보이지 않기 때문에 컴퓨터 파일이 낭비될 수 있어서
파일을 꼭 닫아주어야한다.
# with 구문
with 구문을 하면 파일을 쓰거나 닫거나 하면 파일을 알아서 닫아준다
자주 쓰는 구문이다.
(오 이거 처음 알았네)
코드를 변형없이 파일을 자동으로 닫아주니
편하게 쓸 수 있다.
한번 실행해보면서 파일 읽기 쓰기를 어떻게 동작하는지 확인할 것
# with 구문을 쓰면 파일을 닫을 필요가 없음
with open('new_file.txt', 'w') as f:
f.write("Hello world!\n")
f.write("My name is Codeit.\n")
----
### 1. 파이썬 파일 다루기의 핵심: `with open()`
파일을 다룰 때는 **`with open(...) as ...:` 구문을 사용하는 것이 표준**입니다. `with` 블록이 끝나면 파일을 명시적으로 닫지 않아도(`f.close()`) 파이썬이 **자동으로 파일을 닫아주기 때문**입니다. 이는 리소스 낭비를 막고 코드를 더 안전하고 간결하게 만듭니다.
---
### 2. 파일 열기 모드(mode)
`open()` 함수는 두 번째 인자로 '모드'를 지정받으며, 어떤 작업을 할지 결정합니다.
* `'r'` (Read - 읽기): 파일을 읽을 때 사용합니다. (기본값)
* 파일이 존재하지 않으면 에러가 발생합니다.
* `'w'` (Write - 쓰기): 파일에 내용을 쓸 때 사용합니다.
* 파일이 존재하면 **기존 내용을 모두 삭제하고 새로 씁니다.**
* 파일이 없으면 새로 생성합니다.
* `'a'` (Append - 추가): 파일에 내용을 추가할 때 사용합니다.
* 파일이 존재하면 **기존 내용의 맨 뒤에 이어서 씁니다.**
* 파일이 없으면 새로 생성합니다.
---
### 3. 파일 쓰기 (Write)
`'w'` 또는 `'a'` 모드로 파일을 열고 `.write()` 메서드를 사용합니다.
**예시 코드:**
```python
# 'w' 모드: "my_file.txt"를 새로 작성 (기존 내용은 덮어씀)
with open("my_file.txt", "w", encoding="utf-8") as f:
f.write("안녕하세요!\n")
f.write("파일 쓰기 테스트입니다.\n")
# 'a' 모드: 기존 파일 내용 뒤에 한 줄 추가
with open("my_file.txt", "a", encoding="utf-8") as f:
f.write("이 줄을 추가합니다.\n")
```
---
### 4. 파일 읽기 (Read)
`'r'` 모드로 파일을 열고 다양한 메서드를 사용해 내용을 읽습니다.
**예시 코드:**
```python
# 1. 파일 전체를 하나의 문자열로 읽기: .read()
with open("my_file.txt", "r", encoding="utf-8") as f:
content = f.read()
print("--- .read() 결과 ---")
print(content)
# 2. 한 줄씩 리스트로 읽기: .readlines()
with open("my_file.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print("--- .readlines() 결과 ---")
print(lines) # ['안녕하세요!\n', '파일 쓰기 테스트입니다.\n', '이 줄을 추가합니다.\n']
# 3. (가장 추천) for문으로 한 줄씩 효율적으로 읽기
# 파일이 매우 클 때도 메모리를 효율적으로 사용합니다.
with open("my_file.txt", "r", encoding="utf-8") as f:
print("--- for line in f 결과 ---")
for line in f:
print(line.strip()) # .strip()으로 양 끝의 공백이나 줄바꿈 문자(\n) 제거
```
---
### 5. 인코딩 (`encoding="utf-8"`)의 중요성
파일을 열 때 `encoding="utf-8"` 옵션을 지정하는 것은 매우 중요합니다.
* **이유:** 이 옵션이 없으면 시스템의 기본 인코딩 방식을 사용하는데, 이 방식이 한글을 지원하지 않을 경우 파일이 깨지거나 에러가 발생할 수 있습니다.
* **결론:** **한글 등 비영어권 문자를 다룰 때는 `encoding="utf-8"`을 항상 명시하는 습관**을 들이는 것이 좋습니다.
'AI 엔지니어 부트캠프 > 파이썬 데이터 분석 기초와 머신 러닝 기초' 카테고리의 다른 글
| 2025.09.26(화) - 1주 2일차 강의 복습 (3) - 객체와 클래스 (0) | 2025.09.26 |
|---|---|
| 단어장 만들기 (0) | 2025.09.26 |
| 숫자 맞히기 게임 (0) | 2025.09.26 |
| 2025.09.26(화) - 1주 2일차 강의 복습 (1) - 파이썬 기초 문법 문제 풀이 (0) | 2025.09.26 |
| 2025.09.25(화) - 1주차 1일차 강의 복습 (0) | 2025.09.25 |