Python - Table of Contents

날짜 2023-10-11 12:05

참고/연관된 기록 =>


ㅡ 행동에 대한 이유 =>


나는 파이썬 웹 개발 취업 캠프를 참여했다. 따라서 첫 커리어의 시작점을 파이썬을 주력으로 활용하는 웹 백엔드 개발직군으로 설정했었다. 하지만 캠프에서 제공했던 다양한 선배 개발자 세미나 참여를 통해 조언을 듣고 생각을 정리하는 과정에서 현재는 금융산업-웹 개발자로 진로의 방향성을 좀 더 구체화시킬 수 있었다.

따라서 현재는 파이썬 개발 역량보다는 자바 개발 역량 향상이 필요하지만 캠프에서 보낸 시간들이 의미 있게 만들고, 다음 새로운 언어 학습에 앞서 배운 파이썬 내용을 끝까지 학습하기로 결정.


특정 직무나 산업 분야를 결정했다면, 해당 분야에서 요구하는 기술 스택-프로그래밍 언어를 학습하는 것이 가장 적절하다. 하지만 만약 아직 구체적인 직무나 산업 분야를 결정하지 못한 상황이라면 파이썬으로 시작하는 것이 좋은 선택지라 생각한다.

파이썬 언어는 직관적인 구조를 가지고 있고, 읽기 쉬운 언어이기 때문에 처음 공부하는 초보자가 다른 언어보다 학습하기 수월하다고 생각한다. 더 나아가 해당 언어로 간단한 프로그램을 개발해 보면서 프로그래밍에 대한 기본적인 이해를 쌓는다면 후에 다른 언어로의 전환 시 좀 더 빠르게 학습할 수 있다.

모든 언어가 문법과 표현 방식의 차이점이 있을 뿐 공통적으로 가지고 있는 기본 개념과 원리가 유사하기 때문에 하나의 프로그래밍 언어를 제대로 배워두면 다른 언어로의 학습이 빨라진다.


Second-Brain

Pasted image 20231129151220.png


02장 파이썬 프로그래밍의 기초, 자료형

Important

프로그래밍 언어에서 "문법"이라는 용어는 "코드 작성 방법_규칙" 의미를 가지고 있음

Important

"데이터 타입"이라는 용어는 파이썬에서 변수가 어떤 종류의 데이터를 저장하고 다루는지를 나타내는 것으로 사용됨.

이 용어는 데이터의 특징종류를 모두 포함하고 있음.
즉, "데이터 타입"은 파이썬 언어의 종류 및 특징을 설명하는데 사용되며, 특정 변수나 값이 어떤 종류의 데이터를 나타내는지를 가리킵니다.

ㅡ 객체복사

참조복사상황-객체동일-참조-공유" tabindex="-1">ㅡ 참조복사상황-객체동일-참조-공유
얕은복사상황-작동방식-new객체-값공유
얕은복사-추가내용" tabindex="-1">ㅡ 얕은복사-추가내용
깊은복사상황-deep copy
리스트슬라이싱-주의" tabindex="-1">ㅡ 리스트슬라이싱-주의

객체특징-가변성(Mutability)-불변성(Immutability) 1

파이썬-연산자" tabindex="-1">ㅡ 파이썬-연산자

예약어-키워드" tabindex="-1">ㅡ 예약어-키워드

02-1 숫자형-int-integers

ㅡ 02-2 문자열 자료형

탈출문자-이스케이프-escape
문자열 포매팅-포맷팅" tabindex="-1">ㅡ 문자열 포매팅-포맷팅
문자열-메서드-함수" tabindex="-1">ㅡ 문자열-메서드-함수

02-3 리스트자료형

리스트자료형-함수" tabindex="-1">ㅡ 리스트자료형-함수

ㅡ 02-4 튜플 자료형

ㅡ 02-5 딕셔너리 자료형

딕셔너리-메서드-뷰객체" tabindex="-1">ㅡ 딕셔너리-메서드-뷰객체

ㅡ 02-6 집합 자료형

집합-세트-set-메서드

ㅡ 02-7 불 자료형


내가 알고 있는 얕은 복사란
원본 객체의 주소값만을 복사한 상태이다. 따라서 같은 주소값을 참조하고 있기 때문에 객체는 동일하다.
깊은 복사란
원본 객체 그 자체를 복사했기 때문에 새로운 객체가 생성된 상태이다.

그렇다면 copy메서드는 얕은 복사본이 아니라 깊은 복사본인거 아닌가??

ㅡ 02-8 자료형의 값을 저장하는 공간, 변수

파이썬-변수의미-명명규칙" tabindex="-1">ㅡ 파이썬-변수의미-명명규칙
유효범위-지역-전역변수
네임스페이스-내장변수-name-객체참조탐색순서-LEGB
네임스페이스-접근제어-객체" tabindex="-1">ㅡ 네임스페이스-접근제어-객체
전역상수(변수)-모듈레벨" tabindex="-1">ㅡ 전역상수(변수)-모듈레벨
ㅡ [[네임맹글링(name mangling)-_클래스명__속성명]]
ㅡ [[_ 언더바-언더스코어 기능 및 명명규칙]]

시퀀스-컬렉션-타입

이터레이터-iterator타입-이터러블-Iterable특징


03장 프로그램의 구조를 쌓는다! 제어문

Important


조건문/반복문 모두 제어문이라고 표현함
왜?
특정 조건에 따른/상황에 따라 코드 흐름을 제어하고 싶을 때 조건문/반복문을 사용할 수 있기 때문.

조건문-if-elif-else

else문-추가내용-for문-정상적완료-조기종료

ㅡ 반복문

for문-구조-range()특징
while-무한반복문-작성방식

04장 파이썬의 입출력

04-1 함수란-정의_선언-호출

Important


"함수의 인수로 들어온 객체 - __str__ 매직 메서드를 호출하여 - 문자열 표현을 요청하는 기능이 정의된 함수"=출력함수 = print()

"함수 내부에서 결과를 출력하다" 표현 => print
"함수 내부에서 결과를 반환(출력)하다" 표현 => return
의미-표현이 다르다.
정확한 표현 사용.

Important

ㅡ 함수(function)란 무엇인가?
하나의 특정 작업/기능을 수행하기 위해 독립적으로 설계된 프로그램 코드의 집합/코드블록

ㅡ 함수를 사용하는 이유는 무엇일까?
프로그램 내 중복적인 코드 작성 최소화, 코드의 재사용성

ㅡ 함수 선언하고 호출하기
-인수를 전달받지 않는 함수
-인수를 전달받아 해당 인수에 따라 다른 동작을 수행하도록 하는 것이 일반적
-함수의 선언시 명시된 매개변수의 개수와 같은 수의 인수만을 전달 - TypeError

ㅡ 매개변수(parameter)
함수 호출 시 전달되는 인수의 값을 함수 내부에서 사용할 수 있도록 저장할 함수 내 변수

ㅡ 인수(arguments)
인수 = 인자 = 함수 호출시 입력하는 값 = 전달되는 값 = 입력값

ㅡ 일반적인 함수
함수 내부에서 return 만나면 바로 종료됨
ㅡ 입력값이 없는 함수
ㅡ 리턴값이 없는 함수
ㅡ 입력값도, 리턴값도 없는 함수

ㅡ 매개변수를 지정하여 호출하기
인수 전달 시 매개변수 지정 가능
함수에 전달되는 인수는 매개변수에 순서대로 저장 < 함수 호출할 때 대입 연산자 사용 시 인수가 저장될 매개변수 직접 지정 가능

ㅡ 매개변수의 기본값 설정(default parameters)/ 초기값 설정
-함수 호출 시 설정해 놓은 기본값으로 자동 초기화 가능
-주의 - 매개변수 기본값 설정은 오른쪽부터 명시

ㅡ 입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까?
ㅡ 여러 개의 입력값을 받는 함수 만들기
ㅡ 가변 매개변수(variable parameters)

매개변수 2가지 역할-변수-기본기능조절
매개변수-지정호출-기본값 설정
가변매개변수-위치매개변수-키워드매개변수
함수호출-반환형태에 따른 구분-원본객체-새로운객체" tabindex="-1">ㅡ 함수호출-반환형태에 따른 구분-원본객체-새로운객체
람다표현식-익명함수
함수설명(독스트링)-타입힌트(Type Hint)
타입힌트-추가 설명
타입힌트클래스-기호" tabindex="-1">ㅡ 타입힌트클래스-기호

ㅡ 04-3 파일 읽고 쓰기

파일입출력모듈-클래스" tabindex="-1">ㅡ 파일입출력모듈-클래스
파일입출력-열고닫기-읽는방법" tabindex="-1">ㅡ 파일입출력-열고닫기-읽는방법
파일입출력-파일모드" tabindex="-1">ㅡ 파일입출력-파일모드

05장 파이썬 날개 달기 = 객체지향 프로그래밍 (OOP)

Quote

05장에서는 클래스와 함께 모듈, 예외 처리 및 파이썬 라이브러리에 대해서 배운다. 05장을 끝으로 파이썬 프로그램을 작성하기 위해 알아야 할 대부분의 내용을 배우게 된다.


전자레인지를 사용할 때, 내부의 기계 부품이나 전자적 원리에 대해 자세히 알지 못해도 사용 설명서를 통해 어떤 버튼을 눌러 필요한 기능을 실행할 수 있는지, 온도를 조절할 수 있는지 알 수 있다. 이를 통해 해당 도구를 이용해 음식을 만들 수 있다.

이러한 사실은 프로그래밍 학습에도 해당된다고 생각한다. 프로그래밍 언어 내장함수-모듈-라이브러리-패키지-프레임워크 등 사용할 때, 해당 도구들 각각의 문서/설명서를 읽고 이해함으로써 개발 작업에 활용할 수 있다.

따라서 현재는 강의나 다른 사람들의 설명을 통해 이러한 도구들을 사용하는 방법에 대해 배우고 있지만 궁극적으로는 문서를 스스로 읽고 이해하여, 이 도구들을 효율적으로 사용할 수 있는 능력을 갖추는 것이 중요하다 생각한다.

파이썬-cmd-명령코드

ㅡ 파이썬 코드 구조-로직-형태 분석

import datetime

print(datetime.datetime.now())
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
(module) datetime
	(class) datetime
		(method) def now
Important


파이썬에서 외부 라이브러리를 사용할 때 코드구조 => 모듈, 클래스, 함수 또는 클래스 메서드구분하는 것은 중요


코드에서 클래스, 함수, 모듈을 구분하는 방법은 관례적인 이름의 형식사용 문맥을 고려하여 판단

클래스는 일반적으로 대문자로 시작/정의하고, 함수소문자로 시작하는 경우가 많음


공식문서 or IDE 이용 > 코드 내 정보 확인

ㅡ
soup = bs4.BeautifulSoup() # 대문자! 클래스 (생성자)호출 > 인스턴스 생성

ㅡ
class MyClass: # 클래스
<class 'builtin_function_or_method'>

ㅡ
def my_function(): # 함수 
<class 'function'> # 사용자 정의함수라면 이렇게 함수 확인 가능
<class 'builtin_function_or_method'> # 내장함수라면 이렇게 확인 가능

ㅡ
def my_function(self): # 메서드 

ㅡ
t = datetime.time(4, 20, 1) # (소문자지만 클래스..)예외적인 상황 존재. 클래스 (생성자)호출
<class 'datetime.time'> # 타입검사 time클래스 인스턴스임을 확인 가능
Note


즉, 대문자라면(클래스 이름 뒤에 괄호 사용 호출) 클래스를 호출/생성자 메서드를 호출해 인스턴스를 생성하고 있구나! <> 소문자라면 함수를 호출하고 있구나 !

물론 예외적인 상황 존재.

함수 <> 클래스 메서드 구분 =>
클래스 메서드: 는클래스 내부에 정의된 함수임
클래스 인스턴스 또는 클래스 자체를 통해 호출

클래스-모듈-패키지-라이브러리-프레임워크-용어정리" tabindex="-1">ㅡ 클래스-모듈-패키지-라이브러리-프레임워크-용어정리

패키지-구성이해-init.py기능
라이브러리-패키지-이미지-파일경로" tabindex="-1">ㅡ 라이브러리-패키지-이미지-파일경로
타입힌트파일=pyi=stub
폴더-패키지인식-init.py

ㅡ 05-1 클래스

파이썬-클래스(class)의 특징
클래스-생성자-사용이유-예시코드
ㅡ [[생성자(메서드)-__init__-인스턴스생성과정]]
클래스객체-클래스인스턴스-용어
클래스계층구조-최상위-메타-사용자정의" tabindex="-1">ㅡ 클래스계층구조-최상위-메타-사용자정의
클래스상속-메서드오버라이딩" tabindex="-1">ㅡ 클래스상속-메서드오버라이딩
상속-super(현재클래스, self or cls)-작동원리
MRO-다중상속-다이아몬드
특수속성-MRO
정적메서드-직접참조-@staticmethod
매직메서드-종류
ㅡ [[매직-특수메서드-__str__-__repr__]]
call-기능-바인딩-용어

ㅡ 05-2 모듈

모듈-접근-참조-import구문
모듈내부-서브모듈-표현" tabindex="-1">ㅡ 모듈내부-서브모듈-표현

ㅡ 05-04 예외처리

예외처리구문-사용시기-이유" tabindex="-1">ㅡ 예외처리구문-사용시기-이유
예외처리클래스-계층적구조-상속-파생-다형성" tabindex="-1">ㅡ 예외처리클래스-계층적구조-상속-파생-다형성

05-5 내장함수

ㅡ 05-3,6 표준 라이브러리-패키지(Package)

ㅡ 05-7 외부 모듈-패키지-라이브러리

Important


파이썬은 데이터 분석에 이상적인 언어로, 넘파이(NumPy), 판다스(Pandas), 맷플롯립(Matplotlib) 등과 같은 라이브러리들을 활용하여 데이터 처리, 통계 분석, 시각화를 손쉽게 수행할 수 있다.

pylint-Unittest-라이브러리-스타일-기능분석

ㅡ 고급 파이썬 모듈

고급자료구조-딕셔너리" tabindex="-1">ㅡ 고급자료구조-딕셔너리

ㅡ 파이썬 정규 표현식

정규표현식-의미" tabindex="-1">ㅡ 정규표현식-의미
정규표현식-패턴(모양)정의" tabindex="-1">ㅡ 정규표현식-패턴(모양)정의
이메일-다양한형태-패턴" tabindex="-1">ㅡ 이메일-다양한형태-패턴

07장 파이썬 날아오르기 = 고급 문법

: 이 책을 다 읽은 후 자신에게 필요한 파이썬 프로그램을 만들어 볼 것.

간단한 프로그램이 아니라면 이때 반드시 파이썬 표준 라이브러리를 사용해야 하는 순간이 온다. 하지만 파이썬 표준 라이브러리 가운데 몇 가지는 앞에서 배우지 않은 고급 개념을 미리 알아야만 이해할 수 있다.
07장에서는 이 개념에 대해 알아본다.

컴프리헨션-표현식

데코레이터 섹션 강의자료" tabindex="-1">ㅡ 데코레이터 섹션 강의자료

Flask데코레이터-코드
플라스크-데코레이터-작동원리-이해" tabindex="-1">ㅡ 플라스크-데코레이터-작동원리-이해

데코레이터-함수-구문-표현식" tabindex="-1">ㅡ 데코레이터-함수-구문-표현식

데코레이터-예시코드" tabindex="-1">ㅡ 데코레이터-예시코드

클로저-함수-속성-변수유효범위

OOP-일급객체-조건

제너레이터(함수)-타입-yield

제너레이터-구조-연습기록" tabindex="-1">ㅡ 제너레이터-구조-연습기록

파이썬 실무기술

파이썬-웹스크래핑-이해" tabindex="-1">ㅡ 파이썬-웹스크래핑-이해

웹스크래핑-라이브러리" tabindex="-1">ㅡ 웹스크래핑-라이브러리

ㅡ 파이썬 이미지 작업

ㅡ 파이썬 PDF 스프레드시트 작업

ㅡ 파이썬 이메일 작업

이메일작업-강의자료" tabindex="-1">ㅡ 이메일작업-강의자료


ㅡ 파이썬 미니프로젝트

<Python-크롬 공룡게임-프로젝트-목차>

<오목게임>

코드작성방식-모듈화-함수분할" tabindex="-1">ㅡ 코드작성방식-모듈화-함수분할
재귀적함수호출-팩토리얼" tabindex="-1">ㅡ 재귀적함수호출-팩토리얼

게임-텍스트기반-인터페이스" tabindex="-1">ㅡ 게임-텍스트기반-인터페이스

함수구성패턴-전략-함수호출체인" tabindex="-1">ㅡ 함수구성패턴-전략-함수호출체인