ASAC-SK플래닛 T아카데미 데이터 엔지니어

25.10.13 3일차 [ 파이썬 기초 개념 강의_(주석,변수, 상수, 리터럴, 네이밍 컨벤션, statement(표현식) 끝표식, 단일 데이터형, 문자열)]

Datadesigner 2025. 10. 13. 17:58

오늘은 10일간의 추석 연휴를 마치고 다시 학원에 가는 날이다.

 

오래 쉬었다

 

 

 

오늘부터 본격적인 과목에 대한 강의가 시작되었다.

 

오늘부터 약 2주간 파이썬, 데이터베이스에 대한 강의가 예정되어 있다고 말씀해주셨다.

이번주는 파이썬에 대한 강의가 예정되어있고 오늘은 파이썬의 개념과 기초 문법에 대한 수업이 있었다.

 

 

강의 내용을 정리하려 한다

 

 

오전

 

파이썬 개요, 기초적 개념, 개발 방식, 등등

 


파이썬의 목적
  • 인공지능 분야에서 가장 많이 사용되는 언어
  • 생성형, LLM, 머신러닝 / 딥러닝에서 주력 언어
  • AI활용, 데이터 처리, 엔지니어링 수행시 기본적으로 사용
개발 환경 구축
  • 로컬 기반
    • OS 내에 파이썬 설치
      • 기본 라이브러리만 설치됨
    • 풀 패키지 방식
      • 아나콘다
        • GUI / CLI를 통해 환경 제공
          • GUI는 그래픽 카드 기반 / CLI는 텍스트 입 출력 기반
        • 필요한 필수 패키지 기본 탑재
        • 써드 파티 툴 연계
      • 미니콘다
        • 아나콘다에서 GUI를 제거 (경량화가 특징)
        • CLI기반
    • 도커 기반 설치
      • 가상으로 OS환경 구성
      • PC에 따로 설치할 필요 없이 사용 가능함.
  • 클라우드 기반
    • 파이썬 구동환경을 빌려서 사용
      • OS / 장치 상관 없음
      • 구글의 코랩
    • AWS (아마존 웹 서비스)
      • Cloud9 -> 곧 사용 종료
      • ...
개발 통합 환경(IDE)

 

  • 목적 
    • S/W 개발 , CI / CD (개발부터 배포까지의 과정과 관련된 아주 중요한 개념), 통합 관리
  • 종류
    • 전용 IDE
      • 파이참 (인텔리J)
    • 범용 IDE
      • vs code 
      • 웹에 최적화, 자바 스크립트 기반의 툴
      • 파이썬, NODE, 타언어와의 통합 연계가 용이하여 두 세개의 언어를 써서 개발할 때 연동하기 아주 편함
    • 클라우드
      • colab (구글)
        • ipynb 지원 (ipython + notebook)
타입

 

기본 분류

  • 정의
    • 데이터를 표현하는 ( 데이터를 담는 그릇) 형식
    • 수치 ex) 온도, 집값, 주가,,,
    • 문자열 ex) 리뷰, 댓글, 평가,,,
    • 데이터의 형태
  • 종류
    • 단일 데이터형 (1개)
      • 수치형
        • 정수 : (-1, 0, 1)
        • 부동소수 : 3.14
        • 복소수
      • 문자열
        • 'HELLO'
        • '안녕'
      • 불린형 (2가지 값, 이진, 0아니면 1 = 모 아니면 도라는 뜻)
        • True, False 두 가지 값만 가지고 있음
      • 바이트형
        • 바이너리 데이터 (아직은 많이 볼 일 없다고 하셨음)

 

  • 컬렉션 (값이 1개 이상이라는 뜻)
    • 데이터가 1개 혹은 그 이상 모여서 구성된 타입 (n개의 단일 데이터가 모여서 구성
    • 종류
      • 파이썬
        • 문자열
          • 단일 데이터면서 연속 데이터임
        • list (리스트)
          • 순서가 존재함 -> 인덱스(순서 표기) 존재 -> 정/역방향 인덱스 -> 데이터는 인덱스로 접근, 관리가 가능함
        • dict (딕셔너리)
          • 순서 없음 -> 키 (고유해야 함) 과 값 (데이터) 로 데이터 관리 -> 인덱스 X -> 키를 통하여 값에 접근 가능함
        • tuple (튜플)
          • 리스트와 거의 동일함. 값을 묶는다가 본질, 읽기 전용임 (수정할 수 없음)
        • set (집합)
          • 중복되는 데이터를 제거함
      • 넘파이 (수학, 과학용 라이브러리)
        • ndarray (배열)
        • 고속 연산 수행 용도, 수학, 머신 / 딥러닝 등의 베이스가 되는 기술
      • 판다스 (데이터 사이언스 용도)
        • Series (1차원)
        • DataFrame (2차원)
        • 데이터 전처리, EDA, 분석의 의미를 가짐
      • 딥러닝 (파이토치, 텐서플로우 <- 딥러닝엔진(프레임워크))
        • 텐서 (Tensor)
        • 모델 학습, 모델 활용 용도
      • 머신러닝, LLM은 생성형 모델등은 위의 자료구조 내에서 모두 학습 / 활용함
  • 기타
    • 값이 없다 -> 결측치 (결측데이터) 
      • 파이썬 -> None
      • numpy(넘파이) -> NaN

 

파이썬 타입 계층 구조

 

  • None
    • 값이 없음
  • 수치
    • 정수 : 정수형, 불린형
    • 실수 : 부동소수, 복소수
  • 시퀀스
    • 가변형 : list
    • 불변형 (수정 불가, readonly, immutable) : tuple, 문자열, byte(바이트형)
  • 집합
    • set
  • 매핑
    • dict
흐름제어 (제어문)

 

  • 목적
    • 프로그램의 흐름 제어 -> 특정 목적(기능)을 제공
  • 분류 (키워드)
    • 조건문
      • if, else, elif, end
    • 반복문
      • 0 ~ 무한대 (언제 끝날지 모르겠다) : while
      • 지정된 (제한된) 횟수의 반복 : for
    • 컨트롤
      • continue
      • break
      • else (반복문에서 사용)
    • 연산자 기호 (산술, 비교, 논리,...)
      • 산술 : =, -, +, *, %, //, ...
      • 비교 : >, <, >=, <=, !=, ==, ...
      • 논리 : and, or, not, ...

 

절차적 프로그래밍
  • 타입, 변수, 흐름제어 -> 프로그램 개발 (소규모) -> 절차적 프로그램의 스타일 습득 (연습단계)
  • 목적
    • 흐름제어 연습
    • 로직구성 연습
    • 파이썬에 익숙해지는 과정
    • 게임 작성이 연습에는 제일 편함, 게임을 만들어봐라! 
함수
  • 목표
    • 프로그램의 효율적 작성, 관리 -> 생산성 향상, 빠른 구축 가능 -> 기업관점에서 비용 절감, 신규 프로젝트시 빠른 초기 구축 가능
    • 절차적 프로그램의 한계를 극복하는 방식
  • 종류
    • 내장 함수
      • 파이썬이 설치만 되어있으면 사용 가능함
    • 외장 함수
      • 특정 라이브러리 (패키지)를 import하여 사용 -> .(도트연산자)가 잘 보임
    • 사용자 정의 함수
      • 필요에 의해 개발자가 직접 만든 함수
      • 함수 문법 이해 필요
      • 고급 함수 문법이 존재한다
        • 람다
        • 제너레이터
        • 클로저, 내부/외부 함수 -> 데코레이터
함수 지향적 프로그래밍

 

  • 기본 프로그램 기법상 최근 트렌드
  • 절차 지향적 코드 -> 마이그레이션 진행 (리팩토링 과정 진행) -> 함수 지향적 코드 변환
  • 특징
    • - 엔트리 포인트 (코드의 시작점을 구성) -> 메인 함수
    • ex)
    • if __name__== '__main__'
    •     pass
    • (여긴 완전 예시이고 추후 코드를 배우면 자연스레 알게될거라고 하셨다)
모듈화

 

  • 필요성
    • 너무 긴 코드는 관리, 효율성 하락 -> 코드의 재사용성 한계 -> 코드를 기능별로 쪼개서 (별도 파일로) 관리한다면? ex) 1000줄을 100줄로 쪼개서 관리하면? -> 관리, 유지보수에 유리함
    • 업무 분장또한 가능
  • 모듈화
    • 기능별로 별도 파일로 관리 (쪼개기) 분업
    • 구성
      • 모듈 : py (파이썬 파일 확장자)
      • 패키지 : 디렉토리(폴더), 하위에는 모듈, 다른 패키지가 존재함
  • 모듈 가져오기
    • import ~
    • import ~ from ~

 

예외 처리
  • 목적
    • S/W는 구동시 절대 중단되면 안됨 ex) 웹은 365일 정상가동되어야 함
    • 잠재적 버그를 방어 (예방) -> 상황 발생 - 로깅 -> 정상 작동
  • 특징
    • 파이썬 (그 외 모든 언어들) 내에 잠재적으로 무조건 발생될 수 있는 확률이 높은코드 -> **I/O**
      • 데이터베이스 연동, 파일 엑셋, 네트워크 (통신)
  • 표현 
    • try~
    • except~
    • else~
    • finally~
클래스, 객체
  • 특징
    • 활용 빈도가 낮을 수 있음
    • GUI, S/W 기본 사용
    • 딥러닝 시에도 활용함
    • 생성자, 소멸자, 인스턴스, 변수, 클래스함수 / 변수, 맴버
    • 클래스 단위로 기능 정의, 이를 조립하여 S/W구성

 

객체 지향적 프로그래밍
  • 함수지향적 코드 -> 객체 지향적 코드로 변환

 

 

개요의 결말은 파이썬 코딩 철학이다. 

import this를 입력하면 파이썬의 약 20가지 철학이 나오는데 참 낭만적이니 꼭 해석해보고 곱씹어보길 바란다.


Beautiful is better than ugly. 아름다움이 추함보다 좋다.

Explicit is better than implicit. 명백함이 모호함보다 좋다. 

Simple is better than complex. 단숨함이 복잡함보다 좋다.

Complex is better than complicated. 복합성이 어수선한 것보다 좋다.

Flat is better than nested. 펼쳐놓는 것이 중첩보다 좋다.

Sparse is better than dense. 드문드문한 것이 조밀한 것보다 좋다.

Readability counts. 가독성은 중요합니다.

Special cases aren't special enough to break the rules. 특별한 경우들은 룰을 어길 정도로 특별하지 않다.

Although practicality beats purity. 실제적이고 실용적인 것이 순수함을 이긴다.

Errors should never pass silently. 오류는 말없이 지나쳐선 안된다.

Unless explicitly silenced. 명백하지 않으면 말하지 않는다.

In the face of ambiguity, refuse the temptation to guess. 모호함에 마주하게 되면 추측하지 말아라.

There should be one-- and preferably only one --obvious way to do it. 어떤 일을 하는 확실한 방법이 (될 수 있으면 하나만) 있어야 한다.

Although that way may not be obvious at first unless you're Dutch. 처음에는 어떤 방식이 분명하지 않을 수 있다.

Now is better than never. 지금이 일찍이 어떤 때보다 좋다.

Although never is often better than *right* now. 한 번도 일어나지 않는 것이 당장 일어나는 것보다 더 좋다.

If the implementation is hard to explain, it's a bad idea. 설명하기 어려운 구현은 좋지 않은 아이디어다.

If the implementation is easy to explain, it may be a good idea. 설명하기 쉬운 구현은 좋은 아이디어에 가깝다.

Namespaces are one honking great idea -- let's do more of those! 이름 공간은 좋은 생각이지만 그 이상을 수행하자.


 

오후

 

파이썬 기초 문법

 


주석
  • 명칭
    • 코멘트, comment
    • 코드에 관한 설명, 개발자의 멘트
    • 주석 작성 -> AI가 해석 -> 코드를 추천해줌 (통상적 AI코파일럿 지원 에디터의 특성) ex) 코랩
    • 메타 정보 기술
      • 작성자, 작성일, 이메일, 사용버브 목적
      • 개발 완료 후 -> 문서 작성에 활용 (향후 자동화 처리 스웨거 등에 사용 가능함)
  • 문법
    • 1줄 주석
      • '''
      • '''
'''
(키보드에서 따옴표부분 기호 3개이다, """ 큰 따옴표도 가능)
여러줄 주석으로 활용 가능
여러줄 문자열을 표현하는 방식
- 함수, 클래스 내부의 첫 줄에 자동으로 팝업되어 표기되는 주석으로 처리됨
'''
# 코멘트는 코드에 영향을 주지 않으니 코드 작성 시 같이 구성하는것을 습관화 하는것이 중요하다.
변수
  • 목적
    • 데이터를 담는 그릇 (기초적인 해석)
    • 데이터를 가르키는 참조값을 가진 그릇
  • 특징
    • 변수가 가진 (참조하는) 데이터는 변경(다른값으로 대체) 될 수 있다.
      • ex) 
      • 1 -> 2
      • 정수값에서 정수값으로 변경 (동일한 int타입)
      • 1 -> "hi"
      • 정수값에서 문자열로 변경 (int -> str 타입)
    • 파이썬, 자바스크립트에서는 상관없지만 자바, c 언어에서는 문제가 생김
    • 변수에는 기존 값에서 어떤 타입으로도 변경 가능함 (예약어는 설정할 수 없으니 주의해야 함)
ex)
a = 10

print (a, type(a))

a = 'hello'

print (a,type(a))

출력값

10 <class 'int'>
hello <class 'str'>
  • 결론
    • 파이썬의 변수의 타입은 값이 세팅될 때 결정된다.
    • 파이썬은 타입 추론형
      • python, javascript <-> c / c++, java, typescript
        • 타입추론형의 단점도 있다, 잘못들어온게 대치가 안 된다는 것
        • 변수 선언 시 타입이 결정됨
상수
  • 변수의 반대 개념, 고정값을 의미함
    • 파이썬은 상수개념 x
    • 상수처럼 사용
    • 변수명을 대문자로 표기한다 (모두 대문자로 표기하면 상수인게 일반적 언어에서 관습적인 표현임)
    • 의미론적이고 실제 파이썬 내에서는 변수로 취급됨
  • 용도
    • 환경변수, 학습 시에 고정값으로 인식
PI = 3.14
MAX_POOL_SIZE = 4

 

리터럴
  • 타입의 기본 값 (시그니처 표현)
  • 숫자 리터럴
    • 0 (10진수) 0b (2진수) 0o (8진수) 0x(16진수)
    • 0.0
  • 문자열 리터럴
    • (' ') , (" ") , (''' ''') , ( """ """)
  • 불린 리터럴
    • True, False
  • 컬렉션 리터럴
    • list, dict, tuple, set
    • [] , {} , (,) , {}
  • 위의 모든 리터럴 중 True를 제외한 어떤 값도 조건식에 단독 사용시 무조건 False로 나온다.
네이밍 컨벤션
  • 관습(절대적 규칙 x)
  • 이름짓는 규칙임
  • 대상 
    • 변수명, 함수명, 클래스명
  • 스타일 
    • 스네이크 케이스
      • 파이썬
      • 단어간 _(언더스코어) 로 연결하는 스타일 
      • ex) your_name
      • 소문자로 표기하고 연결
    • 카멜 표기법(참고용)
      • 자바
      • 첫 글자 소문자, 이어지는 단어의 첫 글자는 대문자, 나머지는 모두 소문자
      • yourName (낙타 혹 처럼 삐져나와서 카멜이라고 부름)
      • 유일하게 파이썬의 클래스명은 카멜의 관습을 따름
  • 이름 구성
    • 첫 글자
      • 알파벳, _(언더스코어)만 가능
    • 두번째 글자
      • 숫자도 가능 (숫자가 맨 앞이면 에러)
      • 특수문자는 사용할 수 없음
statement(표현식) 끝표식
  • 완전한 코드 한 줄이 완성되면 표현하는 표식
    • 다른 언어들은 통상 ;(세미콜론)을 사용
    • 파이썬은 생략도 ok 사용도 ok
      • 통상적으로는 생략함
      • 한줄에 여러개의 statement가 존재한다면 구분용으로 사용함
print(1) ; print(2) ; print(3)

출력값
1
2
3

 

단일 데이터형

 

  • 수치형
  • 정수형 : int 
    • ...-1,0,1
    • 값의 간격(step)은 1만큼의 거리가 존재한다는것이 정수다.
    • 데이터 예시
      • 나이, 리뷰 평점 등등
      • # 변수명은 가급적 의미있게 묘사 ex) 나이 = age
  • 부동소수 : float
    • ....0.0....
    • 값과 값 사이의 간격 : 무한대의 수가 존재하는 연속형, 회계 등에 주로 쓰임
    • 데이터 예시
      • 키, 몸무게,...
  • 복소수 (생략)
  • 기타
# 변수를 나열하면 반대쪽에도 같은 수로 배치
# 여러개의 변수를 한번에 초기화 가능함
ex) 
a, b, c = 10, 11, 12

a, b, c

출력값

(10, 11, 12) <- tuple
  • 더하기 a + b
  • 빼기 a - b
  • 곱하기 a * b
  • 나누기(결과물이 float로 출력됨에 주의) a / b
  • 나머지 a % b
  • 몫 a // b
4/2, 4%3, 4//2
(2.0 , 1, 2)

 

 

문자열
  • 자연어 데이터
    • 자연어 -> 가공절차 (토큰화, 인코딩 과정) -> 수치로 표현 (AI관점)
  • 단일 데이터형이면서 연속 데이터형 (컬렉션)
  • 텍스트 데이터, 로그
  • 수정 불가함 (문자열 타입으로 할당된 이후)
    • 원본 수정 X
    • 원본 카피 -> 수정 -> 새로 할당 : 의 과정으로 제공
  • 기호
    • 한줄
      • " "
      • ' '
    • 여러줄 : 주석, 구조유지, 여러줄 원본, LLM사용 시 프롬프트 엔지니어링에 활용 가능 (제로샷, 원샷, 퓨샷)
      • '''
      • '''
      • or
      • """
        """
ex)

# 한 줄 문자열
a = 'abcd ABCD 1234 !@#$ 가나다라'
a , type(a) - 단순 출력

출력 
('abcd ABCD 1234 !@#$ 가나다라' , str)

# 여러 줄 문자열
a = '''
    select *
    from users
    where uid='k' and upw='1234'
   '''
print (a , type(a)) - 깔끔하게 출력
출력
    select *
    from users
    where uid='k' and upw='1234'
  <class 'str'>

 

sk플래닛은 합격 전 수강생 사전평가를 진행한다. 비전공자에 문외한이었던 나는 사전평가를 위해서 급하게 3일동안 벼락치기로 파이썬을 공부했었는데 그때 공부했던 부분들이 다시금 새록새록 기억나면서 재미있는 하루였다, 그리고 아직까지는 진도가 많이 나가지 않아서 복습할 시간도 주셨지만 추후 진도가 나간다면 어떻게 될런지... 약간의 걱정도 남는 하루였다 하하