๐ข Python ๋ชจ๋์ ํํ
Python์์ ๋ชจ๋์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๊ธฐ๋ฅ์ ํ๋์ ํ์ผ์ ๋ชจ์ ๋์ Python ์ฝ๋ ํ์ผ .py ํ์ผ์ด์ง๋ง,
๋๋ ํ ๋ฆฌ(ํด๋)๋ ๋ชจ๋์ด ๋ ์ ์์ต๋๋ค.
์ฆ, Python ๋ชจ๋์ ๋ค์๊ณผ ๊ฐ์ ํํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋์ ์ค๋ช
ํ์ผ | module.py (์ผ๋ฐ์ ์ธ Python ํ์ผ) |
๋๋ ํ ๋ฆฌ(ํจํค์ง) | module/ (ํด๋, ๋ด๋ถ์ __init__.py๊ฐ ์์ด์ผ ํจ) |
ํด๋์ค | ๋ชจ๋ ๋ด๋ถ์ ํน์ ํด๋์ค (from module import ClassName) |
ํจ์ | ๋ชจ๋ ๋ด๋ถ์ ํน์ ํจ์ (from module import function_name) |
โ ๋ชจ๋์ ์ญํ
- ์ฝ๋ ์ฌ์ฌ์ฉ (๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉ ๊ฐ๋ฅ)
- ์ฝ๋ ๊ด๋ฆฌ (๊ธฐ๋ฅ๋ณ๋ก ์ ๋ฆฌ ๊ฐ๋ฅ)
- ์ ์ง๋ณด์ ํธ๋ฆฌ
๐ฃ import vs from import ๋ฌธ๋ฒ ์ ๋ฆฌ
โ import๋ฅผ ์ฌ์ฉํ ๋ (import ๋ค์ ์ค๋ ๊ฒ)
import ๋ชจ๋๋ช
# ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ(ํจํค์ง) ๊ฐ๋ฅ
import ๋๋ ํ ๋ฆฌ.๋ชจ๋๋ช
# ๋๋ ํ ๋ฆฌ(ํจํค์ง) ๋ด๋ถ์ ํน์ ํ์ผ ๊ฐ๋ฅ
โ ํ์ผ(.py)๊ณผ ๋๋ ํ ๋ฆฌ(ํจํค์ง) ๋ชจ๋ ๊ฐ๋ฅํ์ง๋ง,
โ ํด๋์ค(class)์ ํจ์(def)๋ ์ง์ importํ ์ ์์. (from import ์ฌ์ฉ ํ์)
๐ ์์ 1: ์ผ๋ฐ์ ์ธ ๋ชจ๋ (.py ํ์ผ)
import mymodule # [mymodule.py](<http://mymodule.py/>) ๊ฐ์ ธ์ค๊ธฐ
result = mymodule.some_function() # ๋ชจ๋๋ช
.ํจ์๋ช
()์ผ๋ก ํธ์ถ
print(result)
๐ ์์ 2: ํจํค์ง(๋๋ ํ ๋ฆฌ) ๋ด๋ถ์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
import mypackage.mymodule # mypackage ๋๋ ํ ๋ฆฌ ๋ด mymodule.py ๊ฐ์ ธ์ค๊ธฐ
result = mypackage.mymodule.some_function()
โ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ
import mymodule.MyClass # ํด๋์ค๋ ์ง์ import ๋ถ๊ฐ! (์ค๋ฅ ๋ฐ์)
import mymodule.some_function # ํจ์๋ ์ง์ import ๋ถ๊ฐ! (์ค๋ฅ ๋ฐ์)
๐น ํด๋์ค(class)์ ํจ์(def)๋ import ๋จ๋ ์ผ๋ก ๋ถ๋ฌ์ฌ ์ ์๊ณ from import๋ฅผ ์ฌ์ฉํด์ผ ํจ!
โ from import๋ฅผ ์ฌ์ฉํ ๋ (from ๋ชจ๋๋ช import ๋ค์ ์ค๋ ๊ฒ)
from ๋ชจ๋ import ํด๋์ค๋ช
, ํจ์๋ช
, ๋ณ์๋ช
from ๋๋ ํ ๋ฆฌ.๋ชจ๋ import ํด๋์ค๋ช
, ํจ์๋ช
โ ๋ชจ๋ ๋ด๋ถ์ ํน์ ํด๋์ค, ํจ์, ๋ณ์๋ฅผ ์ง์ ๊ฐ์ ธ์ฌ ์ ์์
โ ๋๋ ํ ๋ฆฌ(ํจํค์ง) ๋ด๋ถ์ ํน์ ๋ชจ๋๋ ๊ฐ์ ธ์ฌ ์ ์์
๐ ์์ 1: ๋ชจ๋์์ ํน์ ํจ์ ๊ฐ์ ธ์ค๊ธฐ
from mymodule import some_function # mymodule.py์์ some_function๋ง ๊ฐ์ ธ์ค๊ธฐ
result = some_function()
๐ ์์ 2: ๋ชจ๋์์ ํน์ ํด๋์ค ๊ฐ์ ธ์ค๊ธฐ
from mymodule import MyClass # mymodule.py์์ MyClass ๊ฐ์ ธ์ค๊ธฐ
obj = MyClass()
๐ ์์ 3: ํจํค์ง(๋๋ ํ ๋ฆฌ) ๋ด๋ถ์ ๋ชจ๋์์ ํน์ ํจ์ ๊ฐ์ ธ์ค๊ธฐ
from mypackage.mymodule import some_function # ํจํค์ง ๋ด ํน์ ๋ชจ๋์ ํจ์ ๊ฐ์ ธ์ค๊ธฐ
result = some_function(
from import * ์ฌ์ฉ๋ฒ (๋น์ถ์ฒ โ)
from ๋ชจ๋์ด๋ฆ import *
- ๋ชจ๋ ๋ด ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ค์ง๋ง, ์ด๋ค ํจ์๊ฐ ์ด๋์ ์๋์ง ์๊ธฐ ์ด๋ ค์
- ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ์์ด์ ์ผ๋ฐ์ ์ผ๋ก ์ถ์ฒ๋์ง ์์
๐ ์์
from math import * # math ๋ชจ๋์ ๋ชจ๋ ํจ์๋ฅผ ๊ฐ์ ธ์ค๊ธฐ
print(sqrt(25)) # math.sqrt() ์์ด ์ง์ ์ฌ์ฉ ๊ฐ๋ฅ
print(pi) # math.pi ์์ด pi๋ก ์ฌ์ฉ ๊ฐ๋ฅ
โ ํ์ง๋ง, import *๋ ๋๋ฌด ๋ง์ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ค๋ฏ๋ก, ํ์ํ ๊ฒ๋ง ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์ข์
from math import sqrt, pi # ํ์ํ ๊ฒ๋ง ๊ฐ์ ธ์ค๊ธฐ (์ถ์ฒ)
๐ข import vs from import ๋น๊ต
๊ตฌ๋ถ import from import
๋ถ๋ฌ์ค๋ ๋ฒ์ | ๋ชจ๋ ์ ์ฒด | ๋ชจ๋ ๋ด ํน์ ํจ์/๋ณ์/ํด๋์ค |
์ฌ์ฉ ๋ฐฉ์ | ๋ชจ๋์ด๋ฆ.ํจ์๋ช () | ํจ์๋ช () |
์ฝ๋ ๊ฐ๋ ์ฑ | ๋ช ํํจ (math.sqrt(25)) | ์งง๊ณ ํธ๋ฆฌ (sqrt(25)) |
๋ณ์ ์ถฉ๋ ์ํ | ๋ฎ์ | ๋์ (๋ค๋ฅธ ๋ชจ๋์ ๊ฐ์ ์ด๋ฆ๊ณผ ์ถฉ๋ ๊ฐ๋ฅ) |
- ๋ชจ๋ ์ ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฉด import ๋ชจ๋์ด๋ฆ
- ํน์ ํจ์/๋ณ์๋ง ๊ฐ์ ธ์์ ์งง๊ฒ ์ฐ๊ณ ์ถ๋ค๋ฉด from ๋ชจ๋์ด๋ฆ import ํจ์๋ช
- ํ์ํ ๊ฒ๋ง ๊ฐ์ ธ์์ผ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ์ข์!
๐ด ํ์ผ(๋ชจ๋)์ ํจ์๋ง ์์ ๊ฒฝ์ฐ import ๊ฐ๋ฅํ ๊น?
โ ๋ค, ๊ฐ๋ฅํฉ๋๋ค!
โ Python์์ import ๋ค์๋ ํ์ผ๋ช (ํ์ฅ์ .py ์ ์ธ) ์ด ์ฌ ์ ์์ต๋๋ค.
โ ํ์ผ ๋ด๋ถ์ ํจ์๋ง ์์ด๋ import๋ ๊ฐ๋ฅํ์ง๋ง, ๋ชจ๋๋ช .ํจ์๋ช () ํ์์ผ๋ก ํธ์ถํด์ผ ํจ.
๐ ์์ : mymodule.py (ํ์ผ ๋ด๋ถ์ ํจ์๋ง ์กด์ฌ)
# mymodule.py
def my_function():
return "Hello from my_function!"
โ import ์ฌ์ฉ (ํ์ผ์ ๋ชจ๋๋ก ๊ฐ์ ธ์ค๊ธฐ)
import mymodule # mymodule.py ์ ์ฒด๋ฅผ ๋ถ๋ฌ์ด
result = mymodule.my_function() # ๋ชจ๋๋ช
.ํจ์๋ช
()์ผ๋ก ํธ์ถ
print(result) # "Hello from my_function!"
โ from import ์ฌ์ฉ (ํน์ ํจ์๋ง ๊ฐ์ ธ์ค๊ธฐ)
from mymodule import my_function # ํน์ ํจ์๋ง ๊ฐ์ ธ์ค๊ธฐ
result = my_function() # ์ง์ ํธ์ถ ๊ฐ๋ฅ
print(result) # "Hello from my_function!"
โ import ๋ค์ ํจ์๋ช ์ ์ง์ ์ธ ์ ์์๊น?
import mymodule.my_function # โ ๋ถ๊ฐ๋ฅ! (์ค๋ฅ ๋ฐ์)
๐น import๋ ํ์ผ(๋ชจ๋) ์ ์ฒด๋ง ๊ฐ์ ธ์ฌ ์ ์๊ณ , ํจ์๋ ์ง์ ๊ฐ์ ธ์ฌ ์ ์์!
๐น ํน์ ํจ์๋ ํด๋์ค๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด from import ์ฌ์ฉํด์ผ ํจ.
๐ ๋ณ์/ํด๋์ค/ํจ์ ์ถฉ๋ ์ํ
โ import ๋ชจ๋๋ช ์ ์ฌ์ฉํ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ์ง ์์
โ from ๋ชจ๋ import ๋ณ์/ํด๋์ค/ํจ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ์์
โ ๊ฒฐ๋ก ์ ์ผ๋ก, from import๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ ๋ฎ์ด์์์ง ์ํ์ด ์์!
๐ด ๋ณ์ ์ถฉ๋ ์์
# module_a.py
value = "I am from module_a"
# module_b.py
value = "I am from module_b"
๐จ from import๋ก ๊ฐ์ ธ์ฌ ๊ฒฝ์ฐ ์ถฉ๋ ๋ฐ์ ๊ฐ๋ฅ
from module_a import value
from module_b import value # module_a์ value๊ฐ ๋ฎ์ด์์์ง!
print(value) # "I am from module_b"
โ ํด๊ฒฐ์ฑ โ import ๋ชจ๋๋ช ์ฌ์ฉ ๋๋ as ๋ณ์นญ(alias) ์ฌ์ฉ
import module_a
import module_b
print(module_a.value) # "I am from module_a"
print(module_b.value) # "I am from module_b"
๐ต ํด๋์ค ์ถฉ๋ ์์
# module_x.py
class MyClass:
def show(self):
print("This is MyClass from module_x")
# module_y.py
class MyClass:
def show(self):
print("This is MyClass from module_y")
๐จ from import ์ฌ์ฉ ์ ์ถฉ๋ ๋ฐ์
from module_x import MyClass
from module_y import MyClass # module_x์ MyClass๊ฐ ๋ฎ์ด์์์ง!
obj = MyClass()
obj.show() # "This is MyClass from module_y"
โ ํด๊ฒฐ์ฑ โ import ๋ชจ๋๋ช ์ฌ์ฉ ๋๋ as ๋ณ์นญ(alias) ์ฌ์ฉ
# 1. ๊ฐ์ฅ ์์ ํ ๋ฐฉ์ (์ถ์ฒ)
import module_x
import module_y
obj_x = module_x.MyClass()
obj_y = module_y.MyClass()
obj_x.show() # "This is MyClass from module_x"
obj_y.show() # "This is MyClass from module_y"
# 2. `from import` ์ฌ์ฉ ์ ๋ณ์นญ(alias) ์ฌ์ฉ
from module_x import MyClass as XClass
from module_y import MyClass as YClass
obj_x = XClass()
obj_y = YClass()
๐ต ํจ์ ์ถฉ๋ ์์
# module_a.py
def greeting():
return "Hello from module_a"
# module_b.py
def greeting():
return "Hello from module_b"
๐จ from import ์ฌ์ฉ ์ ์ถฉ๋ ๋ฐ์
from module_a import greeting
from module_b import greeting # module_a์ greeting์ด ๋ฎ์ด์์์ง!
print(greeting()) # "Hello from module_b"
โ ํด๊ฒฐ์ฑ โ import ๋ชจ๋๋ช ์ฌ์ฉ ๋๋ as ๋ณ์นญ(alias) ์ฌ์ฉ
import module_a
import module_b
print(module_a.greeting()) # "Hello from module_a"
print(module_b.greeting()) # "Hello from module_b"
๐ด ์ต์ข ์ ๋ฆฌ
๋์ import ๋ค์ ์ค๋ ๊ฒ from import ๋ค์ ์ค๋ ๊ฒ
ํ์ผ(๋ชจ๋) (mymodule.py) | import mymodule | from mymodule import ํจ์๋ช , ํด๋์ค๋ช |
๋๋ ํ ๋ฆฌ(ํจํค์ง) (mypackage/) | import mypackage.๋ชจ๋๋ช | from mypackage.๋ชจ๋๋ช import ํจ์๋ช , ํด๋์ค๋ช |
ํด๋์ค (class MyClass) | โ (import ๋ถ๊ฐ) | โ from ๋ชจ๋ import MyClass |
ํจ์ (def my_function) | โ (import ๋ถ๊ฐ) | โ from ๋ชจ๋ import my_function |
๐ ๊ฒฐ๋ก
1๏ธโฃ ํ์ผ(.py)์ด๋ ๋๋ ํ ๋ฆฌ(ํจํค์ง)๋ import ๊ฐ๋ฅ
2๏ธโฃ ํด๋์ค์ ํจ์๋ from import๋ฅผ ์ฌ์ฉํด์ผ ๋ถ๋ฌ์ฌ ์ ์์
3๏ธโฃ ํจํค์ง ๋ด๋ถ์ ๋ชจ๋๋ import ๋๋ from import๋ก ๊ฐ์ ธ์ฌ ์ ์์
4๏ธโฃ ํ์ผ ๋ด๋ถ์ ํจ์๋ง ์์ด๋ import ํ์ผ๋ช ๊ฐ๋ฅํ์ง๋ง, ๋ชจ๋๋ช .ํจ์๋ช () ํ์์ผ๋ก ํธ์ถํด์ผ ํจ
5๏ธโฃ ํจ์๋ฅผ ์ง์ import ํ๋ ค๋ฉด from import๋ฅผ ์ฌ์ฉํด์ผ ํจ!
๐ก ์ถ์ฒ ์คํ์ผ
# ๋ชจ๋ ์ ์ฒด ๊ฐ์ ธ์ค๊ธฐ (๋ช
ํํ ์ฌ์ฉ)
import mymodule
result = mymodule.some_function()
# ํน์ ํจ์/ํด๋์ค๋ง ๊ฐ์ ธ์ค๊ธฐ (์งง๊ณ ํธ๋ฆฌ)
from mymodule import some_function
result = some_function()
# ํจํค์ง ๋ด๋ถ์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
import mypackage.mymodule
result = mypackage.mymodule.some_function()
# ํจํค์ง ๋ด๋ถ์ ํน์ ํจ์ ๊ฐ์ ธ์ค๊ธฐ
from mypackage.mymodule import some_function
result = some_function()
'Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Colab] Oracle โ MySQL: ngrok๊ณผ Pandas๋ก ๊ตฌํํ๋ ์ธ๋ถ DB ์ฐ๋ ์ค์ต ๊ฐ์ด๋ (0) | 2025.03.24 |
---|---|
[Colab] Colab & Jupyter์์ !, %, %% Magic commands ์๋ฒฝ ์ ๋ฆฌ (0) | 2025.03.24 |
[python] ํ์ด์ฌ sequence ์๋ฃํ (0) | 2021.12.19 |
[python] ํ์ด์ฌ ์ซ์ ๊ฐ ์๋ฆฌ์ ๋ถ๋ฆฌ (0) | 2021.12.17 |
[python] ํจ์ ์คํ ํ None์ด ์ถ๋ ฅ ๋ ๋ (0) | 2021.12.17 |
๋๊ธ