1. 오늘 한 것
① 파이썬(Python) 언어의 특징 및 장단점 파악
- 장점 (인공지능 특화): 문법이 직관적이고 사람 친화적이라 배우기 쉬움. 세미콜론(;)을 붙이지 않고 들여쓰기로 블록을 구분하여 가독성이 높음.
- 단점 (속도): C언어로 만들어진 번역기(Interpreter)를 통해 한 줄씩 코드를 실행하므로, 기계어 단위로 컴파일되는 C/C++에 비해 실행 속도가 현저히 느림. 컴퓨터 친화적이지 않은 언어.
② 가상환경(Virtual Environment)의 필요성 이해
- 파이썬, 특히 머신러닝/딥러닝을 할 때는 수많은 외부 라이브러리를 설치하게 됨.
- 프로젝트마다 요구하는 라이브러리의 버전이 달라 충돌(Dependency Hell)이 발생하기 쉬우므로, 이를 격리하기 위해 프로젝트별로 독립된 가상환경을 구축하고 그 안에서 인터프리터를 돌리는 것이 필수적임.
③ 기본 문법 및 실습 코드 작성
- 예제 1 (Helloworld.py)
: 기본 출력문과 파이썬의 예약어(Keyword) 목록 확인.
print("Hello World")
import keyword
print(keyword.kwlist) # 파이썬 내부에서 사용하는 키워드 리스트 출력
- 예제 2 (02_ variable_test.py)
: 변수 선언 및 사칙연산을 활용한 원의 넓이/둘레 계산. 파이썬은 변수 선언 시 자료형(int, float 등)을 명시하지 않아도 됨.
pi = 3.14159265
r = 10
print("원주율 =", pi)
print("반지름 =", r)
print("원의 둘레 = ", 2*pi*r)
print("원의 넓이", pi*r*r)
④ 자료형의 특성과 DocString
- 문자열(String)의 특성: 파이썬의 문자열은 한 번 생성되면 원본을 수정할 수 없는 불변 객체, 즉 Immatable Sequence임. 값을 수정하는 것처럼 보여도, 실제로는 메모리상에 새로운 문자열 객체를 형성하고 덮어씌우는 방식으로 동작함.
- DocString: 여러 줄의 주석을 달거나, 클래스/함수의 공식 설명서를 작성할 때 """ 내용 """ (큰따옴표 3개) 문법을 사용함.
2. 문제 / 헷갈린 점
① 함수(Function)와 메서드(Method)의 차이점
- 상황: C, Java를 거쳐 오면서 함수와 메서드라는 용어를 혼용해서 썼는데 정확한 구분이 헷갈림.
- 해결: 기본적으로 기능은 같지만 소속 여부에 따라 다름.
- 함수: 클래스나 객체에 종속되지 않고 독립적으로 존재하는 기능.
- 메서드: 특정 클래스/객체 안에 소속되어 있는 함수. 호출 시 숨겨진 매개변수로 객체 자신을 가리키는 키워드(Java/C++의 this, 파이썬의 self)를 반드시 전달받아야 동작함.
② 객체의 생성과 소멸 메모리 구조
- 상황: 생성자(Constructor)와 소멸자(Destructor)의 역할 상기.
- 정리: * 생성자: 메모리의 힙(Heap) 영역에 객체를 올리고 변수들을 초기화함.
- 소멸자: 힙에 올라간 객체를 해제함. (참고: 파이썬은 C/C++처럼 수동으로 메모리를 해제하지 않아도 '가비지 컬렉터'가 알아서 소멸자를 호출해 메모리를 정리해 줌)
3. 오늘 배운 핵심
- 파이썬은 개발 속도를 얻고 실행 속도를 희생한 언어다. 인터프리터 방식이라 느리지만, 문법이 쉬워 AI 분야의 사실상 표준(De facto) 언어로 자리 잡았다.
- 가상환경은 선택이 아니라 필수다. 머신러닝 라이브러리의 버전 충돌을 막기 위해 프로젝트를 시작할 때는 반드시 가상환경부터 켜는 습관을 들여야 한다.
- 파이썬의 문자열은 Immutable이다. 원본을 수정할 수 없으며, 수정 시 매번 새로운 메모리를 할당해 덮어쓴다는 점을 기억해야 한다.
4. 다음 목표
- 파이썬의 가변 객체(Mutable: List, Dictionary)와 불변 객체(Immutable: Tuple, String)의 차이점 명확히 구분하고 메모리 주소값(id()) 확인해 보기.
- for, while 반복문과 if 조건문을 활용하여 파이썬 특유의 간결한 제어문 문법(들여쓰기)에 익숙해지기.
'포트폴리오 > [IoT 기반 피지컬 AI 교육일지]' 카테고리의 다른 글
| [ 파이썬 기초 ] #3 리스트, 반복문(for), 딕셔너리 활용 (43일차 기록) (0) | 2026.04.22 |
|---|---|
| [ 파이썬 기초 ] #2 자료형 변환, 문자열 포매팅 및 제어문 (42일차 기록) (0) | 2026.04.22 |
| [ 안드로이드 미니 프로젝트 ] #3 컴포넌트 직접 구현 및 최종 회고 (40일차 기록) (0) | 2026.04.21 |
| [ 안드로이드 미니 프로젝트 ] #2 바이브코딩 기능 확장 및 AI 컨텍스트 관리 (39일차 기록) (0) | 2026.04.21 |
| [ 안드로이드 미니 프로젝트 ] #1 바이브코딩 뼈대 구축 및 인증 시스템 (38일차 기록) (2) | 2026.04.21 |