πΆ νμ΅ λ²μ
- κ°μ’: μΈκ³΅μ§λ₯μ μν νμ΄μ¬ (3μ£Όμ°¨ ~ 4μ£Όμ°¨)
- 3-5. νμ΄μ¬ ν¨ν€μ§
- 3-6. μμΈμ²λ¦¬
- 4.* ν΄λμ€, κ°μ²΄ ..
πΆ 곡λΆλ΄μ©
β¨ ν¨ν€μ§
π© μμ½
- numpy, requirements.txt ..
π© λ΄μ©
1. NumPy (Numerical Pythonμ μ½μ)
> ν΅κ³, μ νλμ λ±μ μνμ μ°μ°μ μνν μ μλ κ΄λ²μν ν¨μ ν¬ν¨
> λκ·λͺ¨ λ€μ°¨μ λ°°μ΄κ³Ό νλ ¬μ ν¨κ³Όμ μΌλ‘ λ€λ£¨κΈ° μν λ€μν κΈ°λ₯μ μ 곡
> 벑ν°νλ μ°μ°μ ν΅ν΄ 루ν λμ μ 체 λ°°μ΄μ λν΄ μνμ μ°μ°μ λΉ λ₯΄κ² μν
2. requirements.txt
> νμ΄μ¬ νλ‘μ νΈμ λν λͺ¨λ ν¨ν€μ§μ κ·Έ μ νν λ²μ μ λͺ
μ
> λ€λ₯Έ κ°λ° νκ²½μμλ λμΌν νκ²½μ μ½κ² μ€μ κ°λ₯
> κ°λ°μ κ°μ νΈνμ± λ¬Έμ λ₯Ό μ΅μν
# μμ
numpy == 1.18.5
pandas == 1.1.3
# λ²μ λͺ
μλ°©λ²
1. ==: μ νν λ²μ
2. >=: μ§μ λ λ²μ μ΄μ
3. <=: μ§μ λ λ²μ μ΄ν
4. >, <: μ§μ λ λ²μ λ³΄λ€ ν¬κ±°λ μμ
π© μ¬μ©λ²
1. NumPy
import numpy as np
# λ°°μ΄ μμ±
a = np.array([1, 2, 3])
# λ°°μ΄μ λν μ°μ° μν
print(a + 2) # [3, 4, 5]
print(a * 2) # [2, 4, 6]
# λ€μ°¨μ λ°°μ΄ μμ±
b = np.array([[1, 2, 3], [4, 5, 6]])
# νλ ¬ κ³±μ
c = np.dot(b, a) # [1*1 + 2*2 + 3*3, 4*1 + 5*2 + 6*3]
print(c) # [14, 32]
2. requirements.txt
# νμΌ μμ±
pip freeze > requirements.txt
# requirements.txt μ μ΄μ©ν ν¨ν€μ§ μ€μΉ
pip install -r requirements.txt
β¨ μμΈμ²λ¦¬
π© μμ½
- μμΈμ²λ¦¬
π© λ΄μ©
1. κΈ°λ³Έ λ¬Έλ²
> try, except, else, finally
π© μ¬μ©λ²
# λ€μ€ μμΈ μ²λ¦¬
try:
# μμΈκ° λ°μν μ μλ μ½λ
result = 10 / 0
except ZeroDivisionError:
# νΉμ μμΈ μ²λ¦¬ : ZeroDivisionError λ°μ μ μ²λ¦¬ν μ½λ
print("0μΌλ‘ λλ μ μμ΅λλ€.")
except Exception as e:
# λͺ¨λ μμΈ μ²λ¦¬
print("μλ¬μ
λλ€.")
else:
# μμΈκ° λ°μ μν μ, μ€νν μ½λ
print("κ²°κ³Όλ", result)
finally:
# μμΈ λ°μ μ¬λΆμ μκ΄μμ΄ νμ μ€νλ μ½λ
print("μ€νμ μ’
λ£ν©λλ€.")
# νΉμ 쑰건μμ μμΈ λ°μμν€κΈ° (raise)
x = -1
if x < 0:
raise ValueError("μμλ νμ©λμ§ μμ΅λλ€.")
β¨ ν΄λμ€
π© μμ½
- κ°μ²΄μ§ν₯, ν΄λμ€
π© λ΄μ©
1. ν΄λμ€
> κ°μ²΄λ₯Ό λ§λ€κΈ° μν ꡬ쑰체
> μμ±κ³Ό λ©μλλ‘ κ΅¬μ±
- μμ± : ν΄λμ€μ μνλ₯Ό λνλ΄λ λ³μ
- λ©μλ : ν΄λμ€μ λμμ μ μ
> μ¬μ¬μ© κ°λ₯ν λ¨μλ‘ μΊ‘μν
> μ½λμ λͺ¨λμ± λ° μ¬μ¬μ©μ± ν₯μ
π© μ¬μ©λ²
1. ν΄λμ€
# ν΄λμ€ μμ±
class Student:
# μ΄κΈ°ν λ©μλ
def __init__(self, name, age):
self.name = name # μΈμ€ν΄μ€ λ³μ
self.age = age # μΈμ€ν΄μ€ λ³μ
# λ΄μ₯ν¨μ (str: μ¬μ©μ μΉνμ )
def __str__(self):
return f"Student(name={self.name}, age={self.age})"
# λ΄μ₯ν¨μ (repr: κ°λ°μ λλ²κΉ
, λ‘κΉ
μ μ©)
def __repr__(self):
return f"Student('{self.name}', {self.age})"
# λ΄μ₯ν¨μ (add: κ°μ²΄κ°μ μ°μ° κ°λ₯)
def __add__(self, other):
return f"{self.name + other.name}, {self.age + other.age}"
# λ©μλ
def intro(self):
return f"{self.name} is {self.age} years old"
# λ©μλ
def speak(self, sound):
return f"{self.name} says {sound}"
β __init__
> μ΄κΈ°ν (=μμ±μ) ν¨μ
> μΈμ€ν΄μ€ μμ± μ, μλμ€ν (μΈμ€ν΄μ€ λ§€κ°λ³μ μ€μ )
> __init__ μ λ§€κ°λ³μκ° λ€λ₯΄κ² λ€μ€μΌλ‘ μμ±ν κ²½μ°,
λ§μ§λ§ __init__λ§ μ€νλ¨ (μΈν°νλ¦¬ν° μΈμ΄μ΄λ―λ‘)
β self
> ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ μ°Έμ‘° λ³μ
π£ λ¬Έμ
> ex. intro ν¨μμμ selfλ₯Ό λΉΌκ³ student.intro() μ€ννλ©΄ μλ¬
- TypeError: Student.intro() takes 0 positional arguments but 1 was given
- νλΌλ―Έν°λ₯Ό μ 보λλλ°, 1κ°κ° λμ΄κ°λ€κ³ ν¨
- μΈμ€ν΄μ€μμ νΈμΆ μ, κ°μ²΄ μ체λ₯Ό λ§€κ°λ³μλ‘ λκΉ (λ°μ λ³μ νμ: self)
2. μΈμ€ν΄μ€
# μΈμ€ν΄μ€ μμ±
student = Student("Sparta", 30)
# μΈμ€ν΄μ€ νΈμΆ
print(student.intro()) # Sparta is 30 years old
print(student.speak("Hello")) # Sparta says Hello
3. λ΄μ₯ν¨μ (μΌλΆλ§ μ 리..)
# __str__
> κ°μ²΄μ λ¬Έμμ΄ ννμ μ μ
> μ€μ μ¬μ©μλ€μ΄ μ΄ν΄νκΈ° νΈν ννλ‘ κ°κ³΅νμ¬ μ 곡
> νΈμΆ : print(student) or print(str(student))
# __repr__
> κ°μ²΄μ 곡μμ μΈ λ¬Έμμ΄ ννμ μ μνλλ° μ¬μ©
> κ°λ°μκ° κ°μ²΄μ μμΈ μ 보λ₯Ό λ‘κΉ
νκ±°λ λλ²κΉ
ν λ μ μ©
> νΈμΆ : print(repr(student))
# __add__
> κ°μ²΄κ°μ add μ°μ° κ°λ₯
> λ§€κ°λ³μλ‘ selfμ otherλ₯Ό λ°μ
- student1 = Student("Sparta1", 30)
- student2 = Student("Sparta2", 31)
> νΈμΆ : print(student1 + student2) # 'Sparta1Sparta2', 61
πΆ λλμ
νμ΄μ¬μ 곡λΆνλ©΄μ, λλ λͺ¨λ₯΄κ² μλ°μ λΉκ΅νλ©΄μ νλ€λ³΄λ μ‘°κΈ ν·κ°λ¦¬λ λΆλΆλ€μ΄ λ°μνλ€.
κ·Έλμ μ€λ νν°λλ€μ λμμ ν΅ν΄ ν·κ°λ¦¬λ λΆλΆμ μ ν΄μν μ μμ΄ μ’μλ κ² κ°λ€.
κ·Έλμ λ.. 12μκ° κ½€λ λμμ΄λ 머리 μνλ€..