<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>chiwon-an.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Mon, 04 Aug 2025 23:30:21 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>chiwon-an.log</title>
            <url>https://velog.velcdn.com/images/chiwon-an/profile/a1d544a1-de50-4cfb-bb11-4bcd0dd01efe/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. chiwon-an.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/chiwon-an" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[PYTHON(2)]]></title>
            <link>https://velog.io/@chiwon-an/PYTHON2</link>
            <guid>https://velog.io/@chiwon-an/PYTHON2</guid>
            <pubDate>Mon, 04 Aug 2025 23:30:21 GMT</pubDate>
            <description><![CDATA[<h1 id="🐍-파이썬-클래스-및-객체-지향-정리">🐍 파이썬 클래스 및 객체 지향 정리</h1>
<h2 id="📌-객체">📌 객체</h2>
<ul>
<li><strong>파이썬에서 다룰 수 있는 모든 것들</strong></li>
<li>객체는 &#39;속성&#39;과 &#39;행동&#39;으로 구성됨</li>
</ul>
<hr>
<h2 id="🧱-클래스">🧱 클래스</h2>
<ul>
<li><strong>타입을 표현하는 방법 / 객체를 생성하기 위한 설계도</strong></li>
<li>클래스로 만든 객체를 <strong>인스턴스</strong>라고 함</li>
<li><code>123</code>은 정수 클래스의 인스턴스, <code>&#39;abc&#39;</code>는 문자열 클래스의 인스턴스</li>
<li>인스턴스에서 특정 속성에 접근하면 <code>인스턴스 → 클래스</code> 순으로 탐색</li>
</ul>
<h3 id="🔨-클래스-정의">🔨 클래스 정의</h3>
<pre><code class="language-python">class Person:
    blood_color = &#39;red&#39;  # 클래스 변수

    def __init__(self, name):
        self.name = name  # 인스턴스 변수

    def singing(self):
        return f&#39;{self.name}가 노래합니다.&#39;</code></pre>
<pre><code class="language-python">singer1 = Person(&#39;iu&#39;)
print(singer1.singing())      # 메서드 호출
print(singer1.blood_color)    # 클래스 변수 접근</code></pre>
<hr>
<h3 id="🧩-클래스-구성-요소">🧩 클래스 구성 요소</h3>
<table>
<thead>
<tr>
<th>구성 요소</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td>생성자 메서드 <code>__init__</code></td>
<td>인스턴스 생성 시 자동 호출</td>
</tr>
<tr>
<td>인스턴스 변수</td>
<td>인스턴스 고유 데이터 저장</td>
</tr>
<tr>
<td>클래스 변수</td>
<td>클래스 전체 공유 변수</td>
</tr>
<tr>
<td>인스턴스 메서드</td>
<td>인스턴스에서 호출 가능한 함수 (첫 인자: <code>self</code>)</td>
</tr>
<tr>
<td>클래스 메서드</td>
<td>클래스에서 호출 가능한 함수 (첫 인자: <code>cls</code>)</td>
</tr>
<tr>
<td>정적 메서드</td>
<td>클래스, 인스턴스 상관 없이 동작 (첫 인자 없음)</td>
</tr>
</tbody></table>
<pre><code class="language-python">@classmethod
def number_of_population(cls):
    print(f&#39;인구수는 {cls.count}입니다.&#39;)</code></pre>
<hr>
<h2 id="🧬-상속-inheritance">🧬 상속 (Inheritance)</h2>
<h3 id="✅-기본-상속">✅ 기본 상속</h3>
<pre><code class="language-python">class Professor(Person):
    pass</code></pre>
<h3 id="✅-다중-상속">✅ 다중 상속</h3>
<ul>
<li>상속 우선 순위는 MRO(Method Resolution Order)로 결정</li>
<li>확인: <code>print(SubClass.__mro__)</code></li>
<li>중복 메서드는 상속 순서 기준</li>
<li>부모 메서드 호출: <code>super()</code></li>
</ul>
<hr>
<h2 id="🪄-클래스-참고-개념">🪄 클래스 참고 개념</h2>
<h3 id="🎁-데코레이터">🎁 데코레이터</h3>
<ul>
<li>기존 함수를 수정하지 않고 기능을 추가할 수 있는 문법</li>
</ul>
<h3 id="✨-매직-메서드">✨ 매직 메서드</h3>
<ul>
<li><code>__init__</code>, <code>__str__</code>, <code>__len__</code> 등</li>
<li>특정 상황에 자동 호출</li>
</ul>
<hr>
<h2 id="🔍-정규-표현식">🔍 정규 표현식</h2>
<ul>
<li>문자열에서 특정 패턴을 찾는 기법</li>
<li><code>re</code> 모듈 사용 (<code>import re</code>)</li>
</ul>
<hr>
<h2 id="♻️-제너레이터-generator">♻️ 제너레이터 (Generator)</h2>
<ul>
<li>반복 가능한 객체를 생성하는 함수</li>
<li><code>yield</code> 사용</li>
<li>메모리 효율적<pre><code class="language-python">def count_up():
  i = 0
  while True:
      yield i
      i += 1</code></pre>
</li>
</ul>
<hr>
<h2 id="🧯-예외-처리">🧯 예외 처리</h2>
<pre><code class="language-python">try:
    # 예외 발생 가능 코드
except ValueError:
    # 예외 발생 시 처리
else:
    # 예외 없을 때 실행
finally:
    # 무조건 실행</code></pre>
<hr>
<h2 id="📦-모듈과-패키지">📦 모듈과 패키지</h2>
<h3 id="🔹-모듈">🔹 모듈</h3>
<ul>
<li>하나의 <code>.py</code> 파일 = 모듈</li>
<li>import로 불러올 수 있음</li>
</ul>
<pre><code class="language-python">import math
print(math.sqrt(4))

from math import sqrt
print(sqrt(4))</code></pre>
<hr>
<h3 id="🔹-패키지">🔹 패키지</h3>
<ul>
<li>모듈들을 묶어놓은 폴더</li>
<li>pip로 설치 가능 (<code>pip install requests</code> 등)</li>
</ul>
<hr>
<h3 id="📂-파일-읽기">📂 파일 읽기</h3>
<pre><code class="language-python">with open(&#39;example.txt&#39;, &#39;r&#39;, encoding=&#39;utf-8&#39;) as file:
    data = file.read()
    print(data)</code></pre>
<ul>
<li>읽기 모드: <code>r</code></li>
<li>메서드: <code>read()</code>, <code>readline()</code>, <code>readlines()</code></li>
</ul>
<hr>
<h2 id="❓-질문-정리">❓ 질문 정리</h2>
<ul>
<li>다중 상속 및 MRO</li>
<li>클래스 변수 vs 인스턴스 변수</li>
<li><code>super()</code> 사용 시 주의점</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[PYTHON(1)]]></title>
            <link>https://velog.io/@chiwon-an/PYTHON1</link>
            <guid>https://velog.io/@chiwon-an/PYTHON1</guid>
            <pubDate>Sun, 03 Aug 2025 10:03:13 GMT</pubDate>
            <description><![CDATA[<h2 id="🐍-파이썬-기초-문법">🐍 파이썬 기초 문법</h2>
<h3 id="📘-python-개요">📘 Python 개요</h3>
<h4 id="🔍-배우는-이유">🔍 배우는 이유</h4>
<ul>
<li>문법이 쉽고 직관적이다</li>
<li>커뮤니티와 자료가 풍부하다</li>
<li>데이터 분석, 인공지능, 머신러닝, 자동화 등 분야에 특화되어 있다</li>
</ul>
<h4 id="📊-데이터-분석-활용">📊 데이터 분석 활용</h4>
<ul>
<li>풍부한 라이브러리 (<code>pandas</code>, <code>matplotlib</code>, <code>seaborn</code> 등)</li>
<li>데이터 전처리 및 시각화 가능</li>
<li>머신러닝, 딥러닝 프레임워크 지원</li>
</ul>
<h4 id="💡-알고리즘에-유리한-이유">💡 알고리즘에 유리한 이유</h4>
<ul>
<li>직관적인 문법</li>
<li>강력한 표준 라이브러리</li>
<li>빠른 프로토타이핑 가능</li>
</ul>
<blockquote>
<p>⚠️ Jupyter, Colab에서 RUN 버튼 남발 금지! 셀 실행 시 주의!</p>
</blockquote>
<hr>
<h3 id="🔧-메서드란">🔧 메서드란?</h3>
<ul>
<li>객체에 속한 함수 (ex. <code>문자열.upper()</code>)</li>
<li>객체의 상태를 조작하거나 반환값을 제공함</li>
</ul>
<pre><code class="language-python">&#39;hello&#39;.capitalize()  # &#39;Hello&#39;</code></pre>
<hr>
<h3 id="📚-시퀀스-자료형-sequence-types">📚 시퀀스 자료형 (Sequence Types)</h3>
<ul>
<li>순서를 가진 데이터</li>
<li>인덱싱 / 슬라이싱 가능</li>
<li>반복 가능</li>
<li><code>str</code>, <code>list</code>, <code>tuple</code>, <code>range</code></li>
</ul>
<hr>
<h3 id="🔤-문자열-str">🔤 문자열 (str)</h3>
<h4 id="✅-f-string">✅ f-string</h4>
<pre><code class="language-python">name = &quot;Alice&quot;
print(f&quot;Hello, {name}!&quot;)</code></pre>
<h4 id="✅-인덱싱--슬라이싱">✅ 인덱싱 &amp; 슬라이싱</h4>
<pre><code class="language-python">text = &quot;Python&quot;
print(text[2:4])     # &#39;th&#39;
print(text[::-1])    # &#39;nohtyP&#39;
print(text[0:5:2])   # &#39;Pto&#39;</code></pre>
<h4 id="✅-문자열-메서드">✅ 문자열 메서드</h4>
<ul>
<li><code>replace(old, new[, count])</code></li>
<li><code>strip([chars])</code></li>
<li><code>split(sep, maxsplit)</code></li>
<li><code>&#39;구분자&#39;.join(iterable)</code></li>
</ul>
<hr>
<h3 id="📋-리스트-list">📋 리스트 (list)</h3>
<ul>
<li>변경 가능, 순서 있음, 다양한 타입 저장 가능</li>
</ul>
<pre><code class="language-python">L = [1, 2, 3]
L.append(4)
L.extend([5, 6])
L.pop()
L.reverse()
L.sort()</code></pre>
<hr>
<h3 id="🔒-튜플-tuple">🔒 튜플 (tuple)</h3>
<ul>
<li>변경 불가능한 리스트</li>
<li>내부 로직, 함수 반환 등에서 자주 사용</li>
</ul>
<pre><code class="language-python">t = (1, 2, 3)</code></pre>
<hr>
<h3 id="🎯-range">🎯 range</h3>
<ul>
<li>숫자 시퀀스 생성기</li>
</ul>
<pre><code class="language-python">list(range(1, 10, 2))  # [1, 3, 5, 7, 9]</code></pre>
<hr>
<h3 id="🧩-딕셔너리-dict">🧩 딕셔너리 (dict)</h3>
<ul>
<li>key-value 쌍</li>
<li>key는 변경 불가한 자료형만 가능</li>
</ul>
<pre><code class="language-python">d = {&#39;name&#39;: &#39;Alice&#39;, &#39;age&#39;: 25}
d.get(&#39;name&#39;)
d.keys()
d.values()
d.items()
d.pop(&#39;age&#39;, None)</code></pre>
<hr>
<h3 id="🧺-집합-set">🧺 집합 (set)</h3>
<ul>
<li>순서 없음, 중복 없음</li>
</ul>
<pre><code class="language-python">s = set([1, 2, 3])
s.add(4)
s.remove(1)
s1 | s2  # 합집합
s1 &amp; s2  # 교집합
s1 - s2  # 차집합</code></pre>
<hr>
<h3 id="🔄-복사">🔄 복사</h3>
<h4 id="얕은-복사">얕은 복사</h4>
<pre><code class="language-python">a = [1, [2, 3]]
b = a[:]
b[1][0] = 999
print(a)  # 내부 리스트는 공유됨</code></pre>
<h4 id="깊은-복사">깊은 복사</h4>
<pre><code class="language-python">import copy
a = [1, [2, 3]]
b = copy.deepcopy(a)</code></pre>
<hr>
<h3 id="🔢-형변환">🔢 형변환</h3>
<pre><code class="language-python">print(3 + 5.0)         # 8.0
print(True + 2)        # 3
print(int(&quot;10&quot;))       # 10</code></pre>
<hr>
<h3 id="➕-연산자">➕ 연산자</h3>
<ul>
<li><code>+</code>, <code>-</code>, <code>*</code>, <code>/</code>, <code>//</code>, <code>%</code>, <code>**</code></li>
<li><code>==</code>, <code>!=</code>, <code>is</code>, <code>is not</code></li>
<li><code>and</code>, <code>or</code>, <code>not</code></li>
<li><code>in</code>, <code>not in</code></li>
</ul>
<hr>
<h3 id="🔁-제어문">🔁 제어문</h3>
<h4 id="조건문">조건문</h4>
<pre><code class="language-python">if condition:
    pass
elif another:
    pass
else:
    pass</code></pre>
<h4 id="반복문">반복문</h4>
<pre><code class="language-python">for i in range(5):
    print(i)

while True:
    break</code></pre>
<hr>
<h3 id="🧠-리스트-컴프리헨션">🧠 리스트 컴프리헨션</h3>
<pre><code class="language-python">squares = [x**2 for x in range(5)]</code></pre>
<hr>
<h3 id="🧪-함수">🧪 함수</h3>
<pre><code class="language-python">def greet(name):
    return f&quot;Hello, {name}&quot;

greet(&quot;Alice&quot;)</code></pre>
<ul>
<li><code>*args</code>, <code>**kwargs</code> 사용 가능</li>
<li><code>lambda</code> 함수도 가능</li>
</ul>
<hr>
<h3 id="🧳-packing--unpacking">🧳 Packing &amp; Unpacking</h3>
<pre><code class="language-python">def func(*args, **kwargs):
    print(args)
    print(kwargs)</code></pre>
<hr>
<h3 id="🔧-내장-함수">🔧 내장 함수</h3>
<ul>
<li><code>len()</code>, <code>max()</code>, <code>min()</code>, <code>sum()</code>, <code>sorted()</code></li>
<li><code>map()</code>, <code>zip()</code>, <code>enumerate()</code></li>
</ul>
<hr>
<h3 id="⚙️-람다-표현식">⚙️ 람다 표현식</h3>
<pre><code class="language-python">add = lambda x, y: x + y
print(add(2, 3))  # 5</code></pre>
<hr>
<h3 id="📐-legb-rule">📐 LEGB Rule</h3>
<ul>
<li>Local → Enclosed → Global → Built-in</li>
<li>내부 함수에서 외부 변수를 바꾸고 싶을 땐 <code>nonlocal</code>, <code>global</code> 필요</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>