Created at : 2024-09-03 09:14
Auther: Soo.Y

1. 기초 볡슡

파이썬 심화 κ°•μ˜μ— μ•žμ„œ, 기초 λ³΅μŠ΅μ„ 톡해 파이썬의 κΈ°λ³Έ κ°œλ…λ“€μ„ λ‹€μ‹œ ν•œ 번 ν™•μΈν•˜κ³ , 심화 주제λ₯Ό ν•™μŠ΅ν•˜κΈ° μœ„ν•œ 기초λ₯Ό λ‹€μ§€κ² μŠ΅λ‹ˆλ‹€. 이 μž₯μ—μ„œλŠ” 파이썬의 κΈ°λ³Έ 문법, 데이터 νƒ€μž…κ³Ό 자료ꡬ쑰, ν•¨μˆ˜μ™€ λͺ¨λ“ˆμ„ λ‹€λ£Ήλ‹ˆλ‹€. 이λ₯Ό 톡해 μ•žμœΌλ‘œ λ‹€λ£° 심화 μ£Όμ œλ“€μ„ 더 μ‰½κ²Œ 이해할 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

1.1 파이썬의 κΈ°λ³Έ 문법 볡슡

파이썬의 κΈ°λ³Έ 문법을 μ΄ν•΄ν•˜κ³  μžˆμ–΄μ•Ό μ‹¬ν™”λœ 주제λ₯Ό ν•™μŠ΅ν•  λ•Œ ν˜Όλž€μ„ κ²ͺμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œλŠ” λ³€μˆ˜, μ—°μ‚°μž, μ œμ–΄λ¬Έ, 반볡문 등을 λ³΅μŠ΅ν•©λ‹ˆλ‹€.

1.1.1 λ³€μˆ˜μ™€ 데이터 νƒ€μž…

  • λ³€μˆ˜: νŒŒμ΄μ¬μ—μ„œ λ³€μˆ˜λŠ” 값을 μ €μž₯ν•˜λŠ” κ³΅κ°„μž…λ‹ˆλ‹€. νŒŒμ΄μ¬μ€ 동적 νƒ€μž… 언어이기 λ•Œλ¬Έμ— λ³€μˆ˜μ— ν• λ‹Ήλ˜λŠ” κ°’μ˜ νƒ€μž…μ„ λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
a = 10       # μ •μˆ˜ν˜•
b = 3.14     # μ‹€μˆ˜ν˜•
c = "Hello"  # λ¬Έμžμ—΄
d = True     # λΆˆλ¦¬μ–Έ
  • 데이터 νƒ€μž…:
    • μ •μˆ˜ (int): μ •μˆ˜ 값을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
    • μ‹€μˆ˜ (float): μ†Œμˆ˜μ μ„ ν¬ν•¨ν•˜λŠ” μˆ˜μž…λ‹ˆλ‹€.
    • λ¬Έμžμ—΄ (str): λ¬Έμžμ—΄μ„ λ‚˜νƒ€λ‚΄λ©°, ν°λ”°μ˜΄ν‘œλ‚˜ μž‘μ€λ”°μ˜΄ν‘œλ‘œ λ¬ΆμŠ΅λ‹ˆλ‹€.
    • λΆˆλ¦¬μ–Έ (bool): True λ˜λŠ” False 값을 κ°€μ§‘λ‹ˆλ‹€.

1.1.2 μ—°μ‚°μž

νŒŒμ΄μ¬μ—μ„œ μ‚¬μš©λ˜λŠ” μ£Όμš” μ—°μ‚°μžλ₯Ό λ³΅μŠ΅ν•©λ‹ˆλ‹€.

  • μ‚°μˆ  μ—°μ‚°μž:
    • +: λ§μ…ˆ
    • -: λΊ„μ…ˆ
    • *: κ³±μ…ˆ
    • /: λ‚˜λˆ—μ…ˆ
    • //: λ‚˜λˆ—μ…ˆμ˜ λͺ«
    • %: λ‚˜λ¨Έμ§€
    • **: κ±°λ“­μ œκ³±
x = 10
y = 3
print(x + y)  # 좜λ ₯: 13
print(x / y)  # 좜λ ₯: 3.3333...
print(x // y) # 좜λ ₯: 3
print(x % y)  # 좜λ ₯: 1
  • 비ꡐ μ—°μ‚°μž:
    • ==: 두 값이 같은지 비ꡐ
    • !=: 두 값이 λ‹€λ₯Έμ§€ 비ꡐ
    • <, <=: μž‘κ±°λ‚˜ 같은지 비ꡐ
    • >, >=: ν¬κ±°λ‚˜ 같은지 비ꡐ
print(10 == 10)  # 좜λ ₯: True
print(10 != 5)   # 좜λ ₯: True
print(10 > 5)    # 좜λ ₯: True
  • 논리 μ—°μ‚°μž:
    • and: 두 쑰건이 λͺ¨λ‘ 참이면 μ°Έ
    • or: 두 쑰건 쀑 ν•˜λ‚˜λΌλ„ 참이면 μ°Έ
    • not: 쑰건의 λ°˜λŒ€ κ°’
print(True and False)  # 좜λ ₯: False
print(True or False)   # 좜λ ₯: True
print(not True)        # 좜λ ₯: False

1.1.3 μ œμ–΄λ¬Έ

  • 쑰건문
    • if, elif, elseλ₯Ό μ‚¬μš©ν•˜μ—¬ 쑰건에 따라 λ‹€λ₯Έ μ½”λ“œ 블둝을 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
age = 20
if age >= 18:
    print("μ„±μΈμž…λ‹ˆλ‹€.")
elif age >= 13:
    print("μ²­μ†Œλ…„μž…λ‹ˆλ‹€.")
else:
    print("μ–΄λ¦°μ΄μž…λ‹ˆλ‹€.")
  • 반볡문
    • for 루프: μ‹œν€€μŠ€(리슀트, νŠœν”Œ, λ¬Έμžμ—΄ λ“±)λ₯Ό μˆœνšŒν•©λ‹ˆλ‹€.
    • while 루프: 쑰건이 참인 λ™μ•ˆ μ½”λ“œλ₯Ό λ°˜λ³΅ν•©λ‹ˆλ‹€.
for i in range(5):
    print(i)  # 0λΆ€ν„° 4κΉŒμ§€ 좜λ ₯
 
count = 0
while count < 5:
    print(count)
    count += 1
  • 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜
    • 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜μ„ 톡해 κ°„κ²°ν•˜κ²Œ 리슀트λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.
squares = [x ** 2 for x in range(10)]
print(squares)  # 좜λ ₯: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

1.2 데이터 νƒ€μž…κ³Ό 자료ꡬ쑰

파이썬의 κΈ°λ³Έ 데이터 νƒ€μž…κ³Ό 자료ꡬ쑰λ₯Ό λ³΅μŠ΅ν•©λ‹ˆλ‹€. 이듀을 μ΄ν•΄ν•˜κ³  ν™œμš©ν•  수 μžˆμ–΄μ•Ό 데이터 μ²˜λ¦¬μ™€ μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„μ΄ μ›ν™œν•΄μ§‘λ‹ˆλ‹€.

1.2.1 κΈ°λ³Έ 데이터 νƒ€μž…

  • μˆ«μžν˜• (int, float): μˆ˜ν•™μ  연산을 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ¬Έμžμ—΄ (str): ν…μŠ€νŠΈ 데이터λ₯Ό μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λΆˆλ¦¬μ–Έ (bool): μ°Έ(True)κ³Ό κ±°μ§“(False)을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

1.2.2 리슀트 (List)

  • λ¦¬μŠ€νŠΈλŠ” νŒŒμ΄μ¬μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” 자료ꡬ쑰둜, μ—¬λŸ¬ 개의 값을 순차적으둜 μ €μž₯ν•©λ‹ˆλ‹€.
fruits = ["apple", "banana", "cherry"]
print(fruits[0])  # 좜λ ₯: apple
fruits.append("orange")  # λ¦¬μŠ€νŠΈμ— ν•­λͺ© μΆ”κ°€
  • 리슀트의 μ£Όμš” λ©”μ„œλ“œ
    • append(): λ¦¬μŠ€νŠΈμ— ν•­λͺ©μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.
    • remove(): λ¦¬μŠ€νŠΈμ—μ„œ ν•­λͺ©μ„ μ œκ±°ν•©λ‹ˆλ‹€.
    • sort(): 리슀트λ₯Ό μ •λ ¬ν•©λ‹ˆλ‹€.

1.2.3 νŠœν”Œ (Tuple)

  • νŠœν”Œμ€ λ¦¬μŠ€νŠΈμ™€ μœ μ‚¬ν•˜μ§€λ§Œ, λΆˆλ³€(immutable)μž…λ‹ˆλ‹€. 즉, ν•œ 번 μƒμ„±λ˜λ©΄ μˆ˜μ •ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
point = (1, 2)
print(point[0])  # 좜λ ₯: 1

1.2.4 λ”•μ…”λ„ˆλ¦¬ (Dictionary)

  • λ”•μ…”λ„ˆλ¦¬λŠ” ν‚€-κ°’ 쌍으둜 데이터λ₯Ό μ €μž₯ν•˜λŠ” μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€. λΉ λ₯΄κ²Œ 값을 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.
person = {"name": "Alice", "age": 25}
print(person["name"])  # 좜λ ₯: Alice
person["age"] = 26  # κ°’ λ³€κ²½
  • λ”•μ…”λ„ˆλ¦¬μ˜ μ£Όμš” λ©”μ„œλ“œ
    • keys(): λ”•μ…”λ„ˆλ¦¬μ˜ λͺ¨λ“  ν‚€λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
    • values(): λ”•μ…”λ„ˆλ¦¬μ˜ λͺ¨λ“  값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
    • items(): λ”•μ…”λ„ˆλ¦¬μ˜ ν‚€-κ°’ μŒμ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

1.2.5 μ„ΈνŠΈ (Set)

  • μ„ΈνŠΈλŠ” μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” ν•­λͺ©μ˜ λͺ¨μŒμ„ λ‚˜νƒ€λ‚΄λ©°, μˆ˜ν•™μ—μ„œμ˜ μ§‘ν•© κ°œλ…κ³Ό μœ μ‚¬ν•©λ‹ˆλ‹€.
unique_numbers = {1, 2, 3, 4, 4, 5}
print(unique_numbers)  # 좜λ ₯: {1, 2, 3, 4, 5}
  • μ„ΈνŠΈμ˜ μ£Όμš” λ©”μ„œλ“œ
    • add(): μ„ΈνŠΈμ— ν•­λͺ©μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.
    • remove(): μ„ΈνŠΈμ—μ„œ ν•­λͺ©μ„ μ œκ±°ν•©λ‹ˆλ‹€.
    • union(), intersection(), difference(): μ„ΈνŠΈ 연산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

1.3 ν•¨μˆ˜μ™€ λͺ¨λ“ˆ

ν•¨μˆ˜μ™€ λͺ¨λ“ˆμ„ λ³΅μŠ΅ν•˜μ—¬, 파이썬 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±κ³Ό 가독성을 λ†’μ΄λŠ” 방법을 λ‹€μ‹œ ν•œ 번 μ΅νž™λ‹ˆλ‹€.

1.3.1 ν•¨μˆ˜μ˜ μ •μ˜μ™€ 호좜

  • ν•¨μˆ˜ μ •μ˜: ν•¨μˆ˜λŠ” def ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜λ©λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ λ°˜λ³΅λ˜λŠ” μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
def greet(name):
    return f"μ•ˆλ…•ν•˜μ„Έμš”, {name}λ‹˜!"
 
print(greet("홍길동"))  # 좜λ ₯: μ•ˆλ…•ν•˜μ„Έμš”, ν™κΈΈλ™λ‹˜!
  • λ§€κ°œλ³€μˆ˜μ™€ 인자
    • λ§€κ°œλ³€μˆ˜: ν•¨μˆ˜ μ •μ˜ μ‹œ μ‚¬μš©λ˜λŠ” λ³€μˆ˜.
    • 인자: ν•¨μˆ˜ 호좜 μ‹œ μ „λ‹¬λ˜λŠ” μ‹€μ œ κ°’.
def add(a, b):
    return a + b
 
print(add(5, 3))  # 좜λ ₯: 8
  • κΈ°λ³Έκ°’ λ§€κ°œλ³€μˆ˜: ν•¨μˆ˜ μ •μ˜ μ‹œ 기본값을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
def greet(name="이름 μ—†μŒ"):
    return f"μ•ˆλ…•ν•˜μ„Έμš”, {name}λ‹˜!"
 
print(greet())  # 좜λ ₯: μ•ˆλ…•ν•˜μ„Έμš”, 이름 μ—†μŒλ‹˜!

1.3.2 λžŒλ‹€ ν•¨μˆ˜

  • λžŒλ‹€ ν•¨μˆ˜λŠ” 읡λͺ… ν•¨μˆ˜λ‘œ, κ°„λ‹¨ν•œ μ—°μ‚°μ΄λ‚˜ ν•œ μ€„μ§œλ¦¬ ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.
square = lambda x: x ** 2
print(square(5))  # 좜λ ₯: 25

1.3.3 λͺ¨λ“ˆκ³Ό νŒ¨ν‚€μ§€

  • λͺ¨λ“ˆμ€ 파이썬 파일둜, ν•¨μˆ˜μ™€ λ³€μˆ˜λ₯Ό μ •μ˜ν•˜κ³  λ‹€λ₯Έ νŒŒμΌμ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

  • νŒ¨ν‚€μ§€λŠ” μ—¬λŸ¬ λͺ¨λ“ˆμ„ λ¬Άμ–΄ κ΄€λ¦¬ν•˜λŠ” λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€.

  • λͺ¨λ“ˆμ˜ μ‚¬μš©

# my_module.py
def add(a, b):
    return a + b
 
# main.py
import my_module
 
print(my_module.add(3, 4))  # 좜λ ₯: 7
  • νŒ¨ν‚€μ§€μ˜ μ‚¬μš©

    νŒ¨ν‚€μ§€λŠ” 디렉토리 ꡬ쑰둜 이루어져 있으며, μ—¬λŸ¬ λͺ¨λ“ˆμ„ 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

my_package/
    __init__.py
    module1.py
    module2.py

__init__.py νŒŒμΌμ€ νŒ¨ν‚€μ§€μ˜ μ΄ˆκΈ°ν™” μ½”λ“œκ°€ 포함될 수 있으며, νŒ¨ν‚€μ§€λ₯Ό λͺ¨λ“ˆλ‘œ μΈμ‹ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

1.3.4 가상 ν™˜κ²½

  • 가상 ν™˜κ²½μ€ 파이썬 ν”„λ‘œμ νŠΈλ§ˆλ‹€ λ…λ¦½λœ νŒ¨ν‚€μ§€ μ„€μΉ˜ 곡간을 μ œκ³΅ν•˜μ—¬, ν”„λ‘œμ νŠΈ κ°„μ˜ 쒅속성 μΆ©λŒμ„ λ°©μ§€ν•©λ‹ˆλ‹€.
python -m venv myenv
source myenv/bin/activate  # 가상 ν™˜κ²½ ν™œμ„±ν™” (Windowsμ—μ„œλŠ” `myenv\Scripts\activate`)

가상 ν™˜κ²½μ΄ ν™œμ„±ν™”λ˜λ©΄, ν•΄λ‹Ή ν™˜κ²½μ— λ…λ¦½λœ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜κ³  μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μš”μ•½

이 μž₯μ—μ„œλŠ” 파이썬의 κΈ°λ³Έ 문법, 데이터 νƒ€μž…κ³Ό 자료ꡬ쑰, ν•¨μˆ˜μ™€ λͺ¨λ“ˆμ— λŒ€ν•΄ λ³΅μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 기초 κ°œλ…λ“€μ€ 이후 λ‹€λ£° 심화 μ£Όμ œλ“€μ„ μ΄ν•΄ν•˜λŠ” 데 ν•„μˆ˜μ μž…λ‹ˆλ‹€. 기초 κ°œλ…μ΄ 탄탄해야 λ³΅μž‘ν•œ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμœΌλ―€λ‘œ, 이 뢀뢄을 ν™•μ‹€νžˆ μ΄ν•΄ν•˜κ³  λ„˜μ–΄κ°€λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. λ‹€μŒ μž₯λΆ€ν„°λŠ” 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°κ³Ό 같은 심화 주제λ₯Ό 닀루며 파이썬의 κ³ κΈ‰ κΈ°λŠ₯을 μ΅ν˜€ λ‚˜κ°€κ² μŠ΅λ‹ˆλ‹€.

κ΄€λ ¨ λ¬Έμ„œ

1. 파이썬(Python) μ΄λž€ 10. 파이썬 심화(맛보기)