๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Python

[Python] Python ๋ชจ๋“ˆ์˜ import ๋ฐ from import ์ •๋ฆฌ

by clolee 2025. 3. 19.

๐ŸŸข 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()

๋Œ“๊ธ€