Skip to content

Commit 345996d

Browse files
committed
post: add: Introduce Python series
1 parent ed09bbb commit 345996d

17 files changed

Lines changed: 7259 additions & 0 deletions

assets/introduce-python-calc.png

223 KB
Loading

content/Python 문법 정리/[Python] 객체, 클래스.md

Lines changed: 1270 additions & 0 deletions
Large diffs are not rendered by default.

content/Python 문법 정리/[Python] 날짜, 시간.md

Lines changed: 440 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
date: 2025-06-20
3+
category: [Python 문법 정리]
4+
published: true
5+
fixed: false
6+
---
7+
8+
> 데이터를 충분히 고문하면, 자연은 언제나 바른 말을 할 것이다. - 로널드 코스
9+
10+
지금까지 파이썬 언어 자체(데이터 타입, 코드 구조, 구문 등)만 다뤘다.
11+
2부부터는 실제 문제 적용을 다룰 것이다.
12+
13+
이 장에서는 데이터 길들이기에 대한 실용적인 기술을 배운다.
14+
이것을 데이터 먼징(data munging) 또는 ETL(추출, 변형, 로드)라고 부른다.
15+
프로그래밍 서적은 일반적으로 이러한 주제를 명시적으로 다루지 않지만, 개발자들은 목적에 따라 데이터를 올바른 형태로 만드는 데 많은 시간을 소비한다.
16+
17+
데이터 형식을 크게 텍스트(text)와 2진수(binary)로 나눌 수 있다.
18+
텍스트 데이터(text data)는 파이썬 문자열(string)을 사용한다.
19+
20+
첫 번째로 지금까지 살펴보지 않은 문자열 정보를 다룬다.
21+
- 유니코드 문자
22+
- 정규 표현식 패턴 매칭
23+
24+
두 번째로 이진 데이터와 두 가지 파이썬 내장 타입을 살펴본다.
25+
- 불변 8비트 값의 바이트
26+
- 가변 값의 바이트 배열
27+
28+
=> "아니 텍스트도 2진수 아닌가?" 라는 질문에 대한 답은 **"네, 맞습니다"** 입니다. 컴퓨터에 저장되는 모든 데이터는 궁극적으로 0과 1의 조합인 2진수(바이너리)입니다.
29+
30+
그렇다면 왜 '텍스트'와 '이진' 데이터를 구분할까요? 이는 데이터를 **어떻게 해석하고 다룰 것인가**에 대한 실용적인 구분입니다.
31+
32+
- **텍스트 데이터(Text Data)**: 0과 1의 나열이지만, **정해진 규칙(인코딩, 예: UTF-8, ASCII)에 따라 인간이 읽을 수 있는 '문자'로 해석**하기로 약속된 데이터입니다. 파이썬의 `string` 타입이 바로 이것을 다룹니다. 예를 들어, 2진수 `01000001`은 'A'라는 문자로 해석됩니다.
33+
- **이진 데이터(Binary Data)**: 이미지 파일(JPEG), 실행 파일(EXE), 동영상(MP4)처럼 **문자로 해석되지 않는 모든 종류의 데이터**를 의미합니다. 이 데이터들은 각 파일 형식의 고유한 구조에 따라 해석되어야 합니다. 파이썬의 `bytes` 타입이 이런 데이터를 다룹니다.
34+
'텍스트'와 '이진'의 구분은 물리적인 차이가 아니라, 그것을 사용하는 **프로그램과 사람의 해석 방식에 따른 논리적인 구분**입니다.
35+
36+
## 텍스트 문자열: 유니코드
37+
5장에서 파이썬 문자열 기본을 배웠다.
38+
이제 유니코드를 배워볼 차례다.
39+
파이썬 3의 문자열은 바이트 배열이 아닌 유니코드 문자 시퀀스다.
40+
이것은 파이썬 2에서 파이썬 3의 가장 큰 변화다.
41+
지금까지 이 책의 모든 텍스트 예제는 평범하고 오래된 아스키 코드(ASCII)를 사용했다.
42+
컴퓨터의 기본 저장 단위는 바이트(byte)로 8비트(bit)에 256개의 고유한 값을 저장할 수 있다.
43+
여러 가지 이유로 아스키 코드는 7비트(128개의 고유한 값)만 사용한다.
44+
각 26개의 대소 문자, 숫자 10개, 문장 부호, 공백 문자, 비인쇄 제어 코드로 구성되어 있다.
45+
46+
슬프게도, 세계에는 아스키 코드가 제공하는 것보다 더 많은 문자가 존재한다.
47+
파이썬은 많은 문자와 기호를 지원하기 위해 많은 노력을 했다.
48+
이 책에서 가끔 독특한 문자와 기호를 보게 될 것이다.
49+
다음은 일부 문자 코드다.
50+
- Latin-1 or ISO8859-1
51+
- Windows code page 1252
52+
이들 각 문자는 모두 8비트를 사용하지만, 그것조차도 충분하지 않다.
53+
심지어 비유럽 국가의 언어는 8비트로 모든 문자를 표현할 수 없다.
54+
국가별로 독자적인 문자열 인코딩을 사용하는 것을 해결하기 위해, 국제 표준화 기구에서 유니코드를 만들었다.
55+
유니코드는 수학 및 기타 분야의 기호들도 포함한다. 심지어 이모티콘까지.
56+
57+
> 유니코드는 플랫폼, 프로그램, 언어에 상관없이 문자마다 고유한 번호를 제공한다. - 유니코드 협회
58+
59+
유니코드 코드 차트 페이지는 현재 정의된 모든 문자 집합과 이미지에 대한 링크를 제공한다.
60+
가장 최신 버전 12.0은 문자 137,000개를 정의한다.
61+
각 문자는 고유한 이름과 식별 번호가 있다.
62+
문자들은 유니코드 평면(plane)이라고 하는 8비트의 세트로 분할된다.
63+
첫 번째 256 평면은 기본 다국어 평면(BMP)이다.
64+
위키백과의 유니코드 평면에서 자세한 내용을 확인할 수 있다.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
---
2+
date: 2025-05-01
3+
category: [Python 문법 정리]
4+
published: true
5+
fixed: false
6+
---
7+
8+
## 객체
9+
파이썬에서 모든 데이터는 객체다.
10+
11+
객체는 `타입(자료형) 정의, 다른 객체와 구별하기 위한 고유 ID, 타입과 연관된 값, 객체의 사용 빈도를 추적하는 참조 횟수`를 포함하는 데이터 덩어리다.
12+
13+
클래스는 객체의 정의다.
14+
15+
## 불변과 가변
16+
파이썬에서 타입에 따라 가변과 불변이 정해진다. 리스트, 바이트 배열, 셋, 딕셔너리 타입 빼고는 모두 불변이다.
17+
18+
불변이라는 말은, 객체의 값을 변경할 수 없다는 것이다.
19+
20+
가변이라는 말은 객체의 값을 변경할 수는 있으나, 객체의 타입은 변경할 수 없다는 것이다.
21+
22+
## 리터럴 값
23+
리터럴 또는 리터럴 값은 데이터 값 자체를 선언하는 방식이자, 데이터 값 자체를 의미한다.
24+
25+
파이썬에서는 리터럴 값을 명시할 때 리터럴과 변수를 사용한다.
26+
27+
리터럴은 값을 직접 나타내며, 값에 대한 객체를 만든다.
28+
29+
변수로 리터럴 값을 명시할 수 있는 이유는 변수는 객체를 참조하는 이름이기 때문이다.
30+
31+
즉, 변수도 객체이다.
32+
33+
## 변수
34+
35+
`변수명 = 변수값` 형태로 선언한다.
36+
37+
변수명은 `_` 를 이용하여 구분하며(snake_case), 소문자를 사용한다.
38+
39+
## 할당
40+
할당 연산자(`=`)는 같음이 아니라 할당을 의미한다.
41+
42+
할당 연산자의 오른쪽에 있는 표현식을 먼저 계산한 다음, 왼쪽에 있는 변수에 할당한다.
43+
44+
할당한다는 것은 어떤 객체에 식별가능한 이름을 붙인다는 것이다.
45+
46+
**그리고 파이썬에서는 할당 연산자는 할당만 수행하지, 아무런 값을 반환하지 않는다.**
47+
48+
즉, 할당 연산자는 표현식이 아니다. 문이다.
49+
50+
그러나, 바다 코끼리 연산자(`:=`)는 할당과 반환을 동시에 수행한다.
51+
52+
## 변수는 장소가 아니라 이름이다
53+
54+
변수는 단지 이름이다.
55+
56+
할당은 데이터를 포함하는 객체에 이름을 붙인다.
57+
58+
이름은 객체 자체가 아닌 객체에 대한 참조다. 컴퓨터 메모리 어딘가에 있는 객체 상자에 문자열이 부착된 이름을 시각화한다.
59+
60+
이름으로 객체를 참조하면, 참조 횟수가 증가하고, 객체에 대한 참조를 중단하면 참조 횟수가 감소한다.
61+
62+
이름은 어떤 타입이든 가리킬 수 있다. 데이터 객체 자체에 의해 값과 타입을 얻는다.
63+
64+
## 재할당
65+
66+
```python
67+
a = 3
68+
a = 5
69+
```
70+
71+
`a = 3` 이렇게 하면 `a``3` 정수 객체를 가리킨다. 그리고 `a = 5` 이렇게 하면 `5` 정수 객체를 새롭게 가리키게 된다. 그리고 이전 정수 객체를 참조를 중단하게 된다.
72+
73+
## 복사
74+
75+
**복사는 여러 변수가 같은 객체를 가리키는 것을 의미한다.**
76+
77+
```python
78+
a = 3
79+
b = a
80+
```
81+
82+
**이렇게 하면 `a` , `b``3` 정수 객체를 동시에 같이 가리키게 된다.**
83+
84+
```python
85+
a = [1, 2, 3]
86+
b = a
87+
a[0] = 9
88+
```
89+
90+
**이렇게 하면 `a` , `b` 는 동시에 리스트 객체를 가리킨다.**
91+
92+
리스트는 가변 객체이기 때문에 값이 변경가능하다.
93+
94+
즉, `a[0]` 하면 리스트 객체에 0번째의 요소가 `9` 로 변경된다.
95+
96+
즉, 그러면 리스트 객체는 값이 수정된다.
97+
98+
그러면 리스트 객체를 참조하는 `a` , `b` 둘다 값이 변경되게 된다.
99+
100+
즉, `b[0]` 도 값이 `9` 로 되게 된다.
101+
102+
## 얕은 복사
103+
104+
위 처럼, 주소값만 복사하여 독립성이 보장되지 않는 복사를 얕은 복사라고 한다.
105+
106+
가변 객체는 모두 얕은 복사를 수행한다.
107+
108+
가변 객체는 `deepcopy()` 를 사용하여 깊은 복사를 수행할 수 있다.

0 commit comments

Comments
 (0)