1.1 ๋ชจ๋ ๊ฐ์
Python์์ ๋ชจ๋์ .py ํ์ฅ์๋ฅผ ๊ฐ๋ ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ด. ๋ชจ๋์ ํฐ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ฅผ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์กฐ๊ฐ์ผ๋ก ๋๋๊ฒ ํด์ค. ๊ฐ ๋ชจ๋์ ํจ์, ํด๋์ค, ๋ณ์๋ฅผ ํฌํจํ ์ ์๊ณ , ์ํฌํธ๋ ๋ ์คํ๋๋ ์ฝ๋๋ ํฌํจํ ์ ์์ด.
๊ฐ๋จํ ๋ชจ๋ ์์
๋ชจ๋ mymodule.py
๋ฅผ ๋ง๋ค์ด๋ณด์:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
pi = 3.14159
์ด์ ์ด ๋ชจ๋์ ๋ค๋ฅธ ํ์ผ์์ ์ํฌํธํด์ ์ฌ์ฉํ ์ ์์ด.
1.2 ๋ชจ๋ ์ํฌํธ
Python์์๋ ๋ชจ๋์ ์ํฌํธํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๊ณตํด. ํ๋์ฉ ์ดํด๋ณด์.
์ ์ฒด ๋ชจ๋ ์ํฌํธ
์ด ์์ ์ ์ผ๋ฐ์ ์ธ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ์:
import ๋ชจ๋
์ด ๋ฐฉ๋ฒ์ ์ ์ฒด ๋ชจ๋์ ์ํฌํธํด, ๋ชจ๋ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ํจ์์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ด.
import ๋ชจ๋
print(๋ชจ๋.greet("Alice")) # ์ถ๋ ฅ: Hello, Alice!
print(๋ชจ๋.pi) # ์ถ๋ ฅ: 3.14159
์ด์ ์ math
๋ชจ๋๋ก ์ด๋ฅผ ํ๋ ๊ฑธ ๊ธฐ์ตํ๋?
import math
print(math.ceil(13 / 7)) # ์ฌ๋ฆผ
print(math.floor(13 / 7)) # ๋ด๋ฆผ
๋ชจ๋์์ ํน์ ์์ ์ํฌํธ
๋ชจ๋์ ๋ชจ๋ ๊ฒ์ ์ํฌํธํ์ง ์๊ณ , ํน์ ์์๋ง ์ํฌํธํ ์๋ ์์ด. ์ผ๋ฐ์ ์ธ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ์:
from ๋ชจ๋ import func, var
์ด ๋ฐฉ๋ฒ์ ๋ชจ๋์ ํน์ ํจ์, ํด๋์ค ๋๋ ๋ณ์๋ฅผ ์ํฌํธํ์ฌ ๋ชจ๋ ์ด๋ฆ ์์ด ์ฌ์ฉํ ์ ์๊ฒ ํด์ค.
from mymodule import greet, pi
print(greet("Bob")) # ์ถ๋ ฅ: Hello, Bob!
print(pi) # ์ถ๋ ฅ: 3.14159
๋ณ์นญ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ํฌํธ
์ด ์์ ์ ์ผ๋ฐ์ ์ธ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ์:
import ๋ชจ๋ as ๋ณ์นญ
์ด ๋ฐฉ๋ฒ์ ๋ชจ๋์ ์ํฌํธํ๊ณ ๋ค๋ฅธ ์ด๋ฆ์ ์ง์ ํ ์ ์๊ฒ ํด์ค, ๊ธด ๋ชจ๋ ์ด๋ฆ์ ์ค์ด๊ฑฐ๋ ์ด๋ฆ ์ถฉ๋์ ํด๊ฒฐํ๋๋ฐ ์ ์ฉํด.
import mymodule as mm
print(mm.greet("Charlie")) # ์ถ๋ ฅ: Hello, Charlie!
print(mm.pi) # ์ถ๋ ฅ: 3.14159
๋ชจ๋์ ๋ชจ๋ ์์ ์ํฌํธ
์ด ์์ ์ ์ผ๋ฐ์ ์ธ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ์:
from ๋ชจ๋ import *
์ด ๋ฐฉ๋ฒ์ ๋ชจ๋์ ๋ชจ๋ ํจ์, ํด๋์ค ๋ฐ ๋ณ์๋ฅผ ์ํฌํธํ์ฌ ๋ชจ๋ ์ด๋ฆ ์์ด ์ฌ์ฉํ ์ ์๊ฒ ํด์ค. ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ด๋ฆ ์ถฉ๋์ ์ผ์ผํฌ ์ ์๊ณ , ์ฝ๋ ์ฝ๊ธฐ๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ ๊ถ์ฅ๋์ง ์์.
from mymodule import *
print(greet("Dave")) # ์ถ๋ ฅ: Hello, Dave!
print(pi) # ์ถ๋ ฅ: 3.14159
1.3 ์ํฌํธ ๊ณผ์ ์ ๋ด๋ถ
๋ชจ๋ ๊ฒ์ ์์
๋ชจ๋์ ์ํฌํธํ ๋, Python์ ํน์ ํ ์์๋ก ์ด๋ฅผ ๊ฒ์ํด:
- ํ์ฌ ๋๋ ํ ๋ฆฌ: Python์ ๋จผ์ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ๋ชจ๋์ ์ฐพ์.
-
ํ๊ฒฝ ๋ณ์
PYTHONPATH
: ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ๋ชจ๋์ ์ฐพ์ง ๋ชปํ๋ฉด, Python์PYTHONPATH
ํ๊ฒฝ ๋ณ์์ ์ง์ ๋ ๋๋ ํ ๋ฆฌ์์ ๋ชจ๋์ ์ฐพ์. -
ํ์ค ๋๋ ํ ๋ฆฌ: ๋ชจ๋์ด ์์ง๋ ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด, Python์
sys.path
์ ์ง์ ๋ ํ์ค ๋๋ ํ ๋ฆฌ์์ ๋ชจ๋์ ์ฐพ์.
์์:
import sys
for path in sys.path:
print(path)
๋ก์ปฌ ๋ฐ ๊ธ๋ก๋ฒ ์ํฌํธ
๋ชจ๋ ์ํฌํธ๋ ๊ธ๋ก๋ฒ ์์ค(ํ์ผ์ ์์ ๋ถ๋ถ)์ด๋ ๋ก์ปฌ ์์ค(ํจ์ ๋๋ ๋ฉ์๋ ๋ด)์์ ์ํํ ์ ์์ด.
๊ธ๋ก๋ฒ ์ํฌํธ
๊ธ๋ก๋ฒ ์ํฌํธ๋ ํ์ผ์ ์์ ๋ถ๋ถ์ ์ํ๋์ด, ํ์ผ ์ ์ญ์์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค.
import math
def calculate_circle_area(radius):
return math.pi * radius ** 2
๋ก์ปฌ ์ํฌํธ
๋ก์ปฌ ์ํฌํธ๋ ํจ์๋ ๋ฉ์๋ ๋ด์์ ์ํ๋๋ฉฐ, ํด๋น ํจ์๋ ๋ฉ์๋์์๋ง ์ฌ์ฉํ ์ ์๊ฒ ํด์ค.
def calculate_square_root(x):
import math
return math.sqrt(x)
print(calculate_square_root(16))
๋ก์ปฌ ์ํฌํธ๋ ๋ชจ๋ ๋ก๋ฉ ์๊ฐ์ ์ค์ด๊ฑฐ๋ ์ด๋ฆ ์ถฉ๋์ ๋ฐฉ์งํ๋ ๋ฐ ์ ์ฉํด.
1.4 ๋์ ์ํฌํธ
๋์ ์ํฌํธ๋ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ชจ๋์ ์ํฌํธํ ์ ์๊ฒ ํด์ค. ์ด๋ ์ฌ์ฉ์ ์ ๋ ฅ์ด๋ ๋ค๋ฅธ ๋์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ชจ๋์ ์ํฌํธํด์ผ ํ ๋ ์ ์ฉํด.
์ด ์์ ์ ์ผ๋ฐ์ ์ธ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ์:
module = __import__("๋ชจ๋")
์์ ๋ก math
๋ชจ๋์ ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ํฌํธํด๋ณด์.
module_name = "math"
module = __import__(module_name)
print(module.sqrt(16)) # ์ถ๋ ฅ: 4.0
๊ทธ ์ดํ์ ์ฝ๋๋ import as
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋น์ทํ๊ฒ, ๋ชจ๋ math
์ ๋ณ์นญ module
์ ์ง์ ํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฃฐ ์ ์์ด.
1.5 getattr
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์์ฑ์ ์ ๊ทผํ๊ธฐ
getattr
ํจ์๋ ๋ชจ๋(๋๋ ์ด๋ค ๊ฐ์ฒด)์์ ์์ฑ์ ๋์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๊ฒ ํด์ค.
์ด๋ ์์ฑ ์ด๋ฆ์ด ๋ฏธ๋ฆฌ ์๋ ค์ง์ง ์๊ฑฐ๋ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํด.
getattr
ํจ์์ ๋ฌธ๋ฒ:
getattr(object, name, default = None)
์ฌ๊ธฐ์ object
๋ ์์ฑ์ ๊ฐ์ ธ์ฌ ๊ฐ์ฒด,
name
์ ์์ฑ ์ด๋ฆ์ ํฌํจํ๋ ๋ฌธ์์ด, default
๋
์ง์ ๋ ์ด๋ฆ์ ์์ฑ์ด ์กด์ฌํ์ง ์์ ๋ ๋ฐํ๋๋ ๊ฐ์ด์ผ.
default
๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ None
์ด์ผ.
getattr
ํจ์์ ์ฌ์ฉ ์:
import math
# math ๋ชจ๋์์ sqrt ์์ฑ์ ๊ฐ์ ธ์ค๊ธฐ
sqrt_function = getattr(math, 'sqrt')
print(sqrt_function(25)) # ์ถ๋ ฅ: 5.0
# ์กด์ฌํ์ง ์๋ ์์ฑ์ ๊ฐ์ ธ์ค๋ ค๊ณ ์๋, ๊ธฐ๋ณธ๊ฐ ๋ฐํ
non_existent_attr = getattr(math, 'non_existent', 'default_value')
print(non_existent_attr) # ์ถ๋ ฅ: default_value
์ด ์์์ ์ฐ๋ฆฌ๋ getattr
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ
math
๋ชจ๋์์ sqrt
ํจ์๋ฅผ ๊ฐ์ ธ์ค๊ณ ,
์ซ์ 25์ ์ ๊ณฑ๊ทผ์ ๊ณ์ฐํ๊ธฐ ์ํด ์ด ํจ์๋ฅผ ํธ์ถํด. ์ง์ ๋ ์ด๋ฆ์ ์์ฑ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ,
๊ธฐ๋ณธ๊ฐ default_value
๊ฐ ๋ฐํ๋ผ.
GO TO FULL VERSION