β’
ν¨ν€μ§λ
β’
μ€μΉ
β’
import
ν¨ν€μ§ (package)
λͺ¨λ(νμΌ)λ€μ λ¬Άμ΄ λμ λλ ν 리 ꡬ쑰
λͺ¨λ vs ν¨ν€μ§
κ΅¬λΆ | λͺ¨λ | ν¨ν€μ§ |
λ¨μ | νμΌ νλ | λλ ν 리(ν΄λ) |
κ΅¬μ± | λ¨μΌ .py νμΌ | __init__.py + μ¬λ¬ λͺ¨λ νμΌλ€ |
μμ | module.py | package/__init__.py + module1.py + module2.py |
import λ°©μ | import module | from package import module |
ν¨ν€μ§ μ€μΉ
pip install ν¨ν€μ§λͺ
Shell
볡μ¬
νμ΄μ¬ ν¨ν€μ§λ₯Ό μ€μΉνλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
β’
ν°λ―Έλ/λͺ
λ Ή ν둬ννΈλ₯Ό μ½λλ€
β’
pip install λͺ
λ Ήμ΄ λ€μ μ€μΉνκ³ μΆμ ν¨ν€μ§ μ΄λ¦μ μ
λ ₯ν©λλ€
μ€μΉκ° μλ£λλ©΄ μ±κ³΅ λ©μμ§κ° νμλ©λλ€. λ§μ½ μ΄λ―Έ μ€μΉλ ν¨ν€μ§λΌλ©΄ 'Requirement already satisfied' λ©μμ§κ° λνλ©λλ€.
μ¬λ¬ ν¨ν€μ§λ₯Ό ν λ²μ μ€μΉνκ³ μΆλ€λ©΄ 곡백μΌλ‘ ꡬλΆνμ¬ μ
λ ₯ν μ μμ΅λλ€:
pip install requests pandas matplotlib
Shell
볡μ¬
νΉμ λ²μ μ μ€μΉνκ³ μΆλ€λ©΄ λ€μκ³Ό κ°μ΄ μ
λ ₯ν©λλ€:
pip install pandas==1.5.3
Shell
볡μ¬
import
import λͺ¨λ
Bash
볡μ¬
1. ν¨ν€μ§ μ 체 import
import mypackage.greetings
Python
볡μ¬
μ¬μ© μ:
mypackage.greetings.hello()
Python
볡μ¬
2. λͺ¨λλ§ import
from mypackage import greetings
Python
볡μ¬
μ¬μ© μ:
greetings.hello()
Python
볡μ¬
3. ν¨μ λλ ν΄λμ€λ§ import
from mypackage.greetings import hello
Python
볡μ¬
μ¬μ© μ:
hello()
Python
볡μ¬
4. νμ ν¨ν€μ§ import
from mypackage.subpackage import submodule
Python
볡μ¬
5. λͺ¨λ νλͺ© import (κΆμ₯
)
from mypackage.greetings import *
Python
볡μ¬
__all__μ μ€μ νμ§ μμΌλ©΄ μμλλ‘ μλνμ§ μμ μ μμ΄μ.
μ°Έκ³ : __init__.py μν
β’
__init__.pyλ ν΄λΉ λλ ν 리λ₯Ό "ν¨ν€μ§"λ‘ μΈμνκ² ν΄μ€λλ€.
β’
λ΄λΆμμ μ΄κΈ°ν μ½λλ κΈ°λ³Έ λ
ΈμΆ ν¨μ λ±μ μ€μ ν μ μμ΄μ.
μ:
# mypackage/__init__.py
from .greetings import hello
Python
볡μ¬
μ΄λ κ² νλ©΄:
from mypackage import hello
hello()
Python
볡μ¬
λͺ¨λ import μμ
mymodule.pyλΌλ νλμ .py νμΌμ΄ μλ€κ³ κ°μ :
# mymodule.py
def say_hello():
print("Hello from module!")
Python
볡μ¬
# main.py
import mymodule
mymodule.say_hello()
Python
볡μ¬
ν¨ν€μ§ import μμ
# mypackage/
# βββ __init__.py
# βββ greetings.py
# βββ utils.py
Python
볡μ¬
greetings.py
def hello():
print("Hello from package!")
Python
볡μ¬
main.py
from mypackage import greetings
greetings.hello()
Python
볡μ¬
νμνλ©΄ μλ κ²½λ‘λ μ λ κ²½λ‘ importλ μμλ‘ λ³΄μ¬μ€ μ μμ΄μ. λ μΆκ°ν κΉμ?
μμ μ½λ
μ 1: requests ν¨ν€μ§ μ¬μ© β μΉ νμ΄μ§ μμ²
import requests
res = requests.get("https://example.com")
print(res.status_code)
print(res.text)
Python
볡μ¬
μ 2: matplotlib ν¨ν€μ§ μ¬μ© β κ·Έλν 그리기
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [10, 20, 30]
plt.plot(x, y)
plt.title("Sample Graph")
plt.show()
Python
볡μ¬
ν¨ν€μ§ νλ‘μ νΈ κ΅¬μ‘° μμ
my_package/
βββ __init__.py
βββ module1.py
βββ module2.py
βββ subpackage/
βββ __init__.py
βββ submodule.py
Markdown
볡μ¬
μ΄λ° κ΅¬μ‘°μΌ λ μ¬μ© μμ:
from my_package import module1
from my_package.subpackage import submodule
Python
볡μ¬
ν¨ν€μ§ λ§λ€κΈ° μ€μ΅
1.
ν¨ν€μ§ μ΄λ¦μ ν΄λ μμ±
2.
__init__.py νμΌ μμ±
"ν¨ν€μ§"λ‘ μΈμνκ² νλ νΉλ³ν νμΌ
3.
.py λͺ¨λ νμΌ μΆκ°
4.
__init__.py μμ 곡κ°ν λͺ¨λ μ§μ
5.
ν¨ν€μ§ κ°μ Έμμ μ¬μ©νκΈ°
ν¨ν€μ§ μ΄λ¦μ ν΄λ μμ±
JSON νμΌ λ°μ΄ν°λ₯Ό μ‘°ν, νν°λ§, μ μ₯
π¦ jsonutils
Python
볡μ¬
__init__.py νμΌ μμ±
"ν¨ν€μ§"λ‘ μΈμνκ² νλ νΉλ³ν νμΌ
π¦ jsonutils
βββ π __init__.py
Python
볡μ¬
.py λͺ¨λ νμΌ μΆκ°
π¦ jsonutils/
βββ π __init__.py
βββ π¦ io/
β βββ π __init__.py
β βββ π json_loader.py
βββ π¦ processing/
β βββ π __init__.py
β βββ π filter.py
βββ π¦ storage/
βββ π __init__.py
βββ π json_saver.py
Markdown
볡μ¬
μ΄λ° κ΅¬μ‘°λ‘ ν΄λμ νμΌμ λ§λ€μ΄λ³΄κ² μ΅λλ€:
β’
β’
β’
import json
"""
json νμΌ μ½κΈ°
"""
def read_json(filepath):
# νμΌ μ΄κΈ°
with open(filepath, 'r', encoding='utf-8') as f:
# JSON νμΌ μ½κΈ°
return json.load(f)
Python
볡μ¬
'''
리μ€νΈ νν°λ§ ν¨μ
'''
def filter_by_field(data, field, value):
# list μΈμ€ν΄μ€κ° μλ λ
if not isinstance(data, list):
# raise : μμΈ κ°μ λ°μ ν€μλ
# ValueError : μ μ ν κ°μ΄ μλ κ²½μ° λ°μνλ μμΈ
raise ValueError("리μ€νΈ νμμ΄ μλλλ€.")
return [ item for item in data if item.get(field) == value ]
Python
볡μ¬
import json
'''
JSON λ°μ΄ν° μ μ₯ ν¨μ
'''
def save_json(data, filepath):
# μ°κΈ° λͺ¨λλ‘ νμΌ μ΄κΈ°
with open(filepath, 'w', encoding='utf-8') as f:
# data λ₯Ό JSON νμμΌλ‘ νμΌ μ μ₯
# ensure_ascii : False μμ€ν€ λ¬Έμκ° μλ κ²λ κ·Έλλ‘ μ μ₯
# indent : λ€μ¬μ°κΈ°λ₯Ό 2μΉΈμΌλ‘ μ§μ
json.dump(data, f, ensure_ascii=False, indent=2)
Python
볡μ¬
__init__.py μμ 곡κ°ν λͺ¨λ μ§μ
from .io.json_loader import read_json
from .processing.filter import filter_by_field
from .storage.json_saver import save_json
__all__ = ['read_json', 'filter_by_field', 'save_json']
Python
볡μ¬
β’
μ¬κΈ°μλ read_json, filter_by_field, save_jsonλ§ μΈλΆμμ μ κ·Ό κ°λ₯νλλ‘ μ€μ ν©λλ€.
ν¨ν€μ§ κ°μ Έμμ μ¬μ©νκΈ°
β’
main.py
from jsonutils import read_json, filter_by_field, save_json
data = read_json('student.json')
filtered = filter_by_field(data, 'gender', 'female')
save_json(filtered, 'filtered.json')
Python
볡μ¬
__init__.py νμΌμ΄ λΉμ΄ μμ΄λ λλμ?
β’
λ€, λ΄μ©μ΄ μμ΄λ μ ν λ¬Έμ μκ³ μμ£Ό νν μν©μ
λλ€.
β’
λ¨μ§ ν΄λκ° ν¨ν€μ§μμ λͺ
μνλ μν μ νλ©°, μ΄κΈ°ν μ½λκ° νμν κ²½μ° κ·Έλ λ΄μ©μ μΆκ°νλ©΄ λ©λλ€.
μν© | __init__.py νμ μ¬λΆ | λΉκ³ |
μΌλ° μλΈν¨ν€μ§λ‘ λ§λ€κ³ μΆμ λ | κΆμ₯ (νμ μλ) | λ΄μ©μ λΉμλ λ¨ |
λ€μμ€νμ΄μ€ ν¨ν€μ§ (PEP420) | μμ΄λ λμ κ°λ₯ | 볡μ‘ν νλ‘μ νΈλ λΌμ΄λΈλ¬λ¦¬μμ νμ© |
__all__
ν΄λΉ ν¨ν€μ§μμ 곡κ°μ μΌλ‘ μ 곡ν μ΄λ¦λ€μ λͺ
μμ μΌλ‘ μ μνλ 리μ€νΈμ
λλ€.
__all__μ μ£Όμ λͺ©μ μ:
β’
λͺ¨λ κ°μ Έμ€κΈ°λ₯Ό μ μ΄νμ¬ μ½λμ λͺ
νμ±κ³Ό μλλ₯Ό λͺ
μμ μΌλ‘ νν
β’
λΆνμν μ΄λ¦ κ³΅κ° μ€μΌ λ°©μ§ (νμν κ²λ§ 곡κ°)
β’
API μ€κ³μ μ μ§λ³΄μμ± ν₯μ (κ³΅κ° μΈν°νμ΄μ€λ₯Ό λͺ
νν μ μ)
리μμ€ μλͺ¨ μΈ‘λ©΄μμλ ν° μν₯μ΄ μμ΅λλ€. Pythonμ μ€μ λ‘ λͺ¨λμ μ¬μ©ν λλ§ λ©λͺ¨λ¦¬μ λ‘λνκΈ° λλ¬Έμ
λλ€.
β’
from package import * λ₯Ό μ€νν λ μ΄λ€ λͺ¨λκ³Ό ν¨μλ₯Ό import ν μ§ μ μ΄ν©λλ€.
# mypackage/__init__.py
__all__ = ['module1', 'function1', 'function2'] # μ΄ νλͺ©λ€λ§ 곡κ°λ¨
Python
볡μ¬
β’
__all__μ μ μνμ§ μμΌλ©΄ λͺ¨λ public μ΄λ¦(μΈλμ€μ½μ΄λ‘ μμνμ§ μλ μ΄λ¦)μ΄ importλ©λλ€.
β’
μ½λμ λͺ
νμ±κ³Ό μμ μ±μ μν΄ __all__μ λͺ
μμ μΌλ‘ μ μνλ κ²μ΄ μ’μ κ΄νμ
λλ€.
μλ₯Ό λ€μ΄, μ μμ μμλ read_json, filter_by_field, save_json ν¨μλ§ μΈλΆμμ μ¬μ©ν μ μλλ‘ μ ννμ΅λλ€.