Saturday_June_27
.
.
.
Module : ๋ณ์, ํจ์, ํด๋์ค ๋ฑ์ ๋ชจ์๋์ ํ์ผ.
Package : Module ํ์ผ์ ์งํฉ(๋๋ ํ ๋ฆฌ)๋ผ๊ณ ์๊ฐํ๋ฉด ๐
์ ๋ฐ๋ก Module์ด๋ Package๋ก ๋ฌถ์๊น?
1 - ๋ค๋ฅธ ํ์ด๋ฆฌ์์ ์ฌ์ฌ์ฉ ํ๋ ค๊ณ
2 - ์ฝ๋๊ฐ ๊ธธ๋ฉด ์ ์์๋๊น ๐
ํ์ผ์ ๋ง๋ค๊ณ , ๋ง๋ ํ์ผ ์์ ์ฌ์ฌ์ฉ ํ๊ณ ์ถ์ ๋ณ์, ํจ์, ํด๋์ค ๋ฑ์ ๊ตฌํํ๋ฉด ๋!
## my_module.py my_module_var = 7 def my_module_func(): return "Hello!" class MyModuleClass: pass
my_module.py ๋ผ๋ ํ์ด์ฌ ํ์ผ์ ๋ง๋ค๊ณ , ๊ฑฐ๊ธฐ์ my_module_var๋ผ๋ ๋ณ์์ my_module_func์ด๋ผ๋ ํจ์, ๊ทธ๋ฆฌ๊ณ MyModuleClass๋ผ๋ ํด๋์ค๋ฅผ ์ ์ ํ ๊ฒ์ด๋ค.
์ด๋ฌ๋ฉด ๋์ค์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ป๊ฒ ํ๋???
๊ทธ๋ ๋ค. Import๋ฅผ ์จ์ฃผ๋ฉด ๋๋ค ๐คฉ
import module_name
์ด๋ ๊ฒ import๋ฅผ ํ๊ณ importํ ํ์ผ์ ๋ถ๋ฌ์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด ๊ทธ ํ์ผ์์ ์ ์ํ ๋ณ์, ํจ์, ํด๋์ค๋ค์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค.๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ์ฃผ์ ํ ์ ์, module_name.py๋ผ๋ ํ์ผ์ importํ๋ค๊ณ
import module_name.py
์ด๋ ๊ฒ ํ์ฅ์์ธ .py๊น์ง ๋ถ์ด๋ฉด ์๋๋ค. ์กฐ์ฌํ๊ธธ ๋ฐ๋๋ค.
์ ์ด์ importํ ํ์ผ์ ๋ถ๋ฌ์ค๋๋ฐ ๊น์ง๋ ์ฑ๊ณตํ๋ค.
๊ทธ๋์ ์ง์ง๋ก ์ด๋ป๊ฒ ์ฐ๋๋?module_name.my_variable module_name.my_function() module_name.MyClass
์ด๋ฌํ ํํ๋ก importํ ๋ชจ๋์ด๋ฆ.์ํ๋ ๋ณ์, ํจ์, ํด๋์ค ๋ฑ์ ์จ์ฃผ๋ฉด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
import๋ฅผ ํด์คฌ๋๋ฐ ๋ชจ๋์ด๋ฆ์ ์ฌ์ฉํ ๋๋ง๋ค ์จ์ค์ผ ํ ๊น?
๋ชจ๋ ์ด๋ฆ์ ์์ ๋ถ์ฌ์ค์ผ ํ๋ ์ด์ ๋ ํ์ด์ฌ์ด ์ฌ์ฉํ ๋ณ์, ํจ์, ํด๋์ค ๋ฑ์ด ์ด๋ ํ์ผ์ ๋ด์ผ ์ฐพ์ ์ ์๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
import๋ฅผ ์ฌ๋ฌ๊ฐ๋ฅผ ํด์คํ ๋ฐ, ๊ทธ ์ค์ ์ด๋ค ๋ชจ๋์ด ์ด ๋ณ์, ํจ์, ํด๋์ค๋ฅผ ๊ฐ๊ณ ์๋์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ด์ฌ ๋๊ณ ๋ณด์
import๊ฐ ์๋ from import ํค์๋๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋์ ๋ถ๋ฌ์ฌ ๊ฒฝ์ฐ, ๋ชจ๋์ด๋ฆ์ ๋ถ์ด์ง ์์๋ ๋ฐ๋ก ์ํ๋ ๋ณ์, ํจ์, ํด๋์ค์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋ชจ๋์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ช ํํ ๋ from import๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฟ ๐ฏ ์ด๋ค.
from my_module import * print(my_module_var) my_module_func()
์ด๋ ๊ฒ * ๋ฅผ ๋ถ๋ฌ์ค๋ฉด my_module์ ๋ชจ๋ ์์๋ฅผ import ํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ์ฐ๋ ๊ฒ์ ๊ถ์ฅํ์ง ์๋๋ค๊ณ ํ๋ค. ์ด์ ๋, Local Scope์ ๊ฐ์ง๊ณ ์๋ ๋ค๋ฅธ ๋ณ์, ํจ์, ํด๋์ค์ ์ด๋ฆ์ด ์ถฉ๋์ด ๋ฌ์ ๋, ๋งค์ฐ ๊ณค๋ํ๊ณ ํผ๊ณคํด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ฅผ ๋์์ค ์น๊ตฌ์ธ as๋ฅผ ์๊ฐํ๋ค.
from my_module import my_func as f1 from my_module2 import my_func as f2 from my_module3 import function_with_name_too_long as f3 f1() f2() f3()
๋ถ๋ฌ์จ ์์๋ค(๋ณ์, ํจ์, ํด๋์ค)๋ฑ์ ์ด๋ฆ์ ์นํํด์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
import my_module as m1 m1.my_module_func()
์ด๋ ๊ฒ ๋ชจ๋ ์ด๋ฆ๋ as๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ด๋ฆ์ผ๋ก ์นํํด์ ์ธ ์ ์๋ค.
์์ ๋งํ๋ฏ, module๋ณด๋ค ๋ ํฌ๊ณ , ๋ณต์กํ ์ฝ๋๋ผ๋ ๊ฒ.
module์ด ๋จ์ํ ํ์ด์ฌ ํ์ผ์ด๋ผ๋ฉด ์ฌ๋ฌ ํ์ผ์ ํ ๊ณณ์ ๋ฌถ์ด์ ๊ด๋ฆฌํ๋ ๋๋ ํ ๋ฆฌ์ ๊ฐ๋ ์ด ๋ฐ๋ก Package์ธ ๊ฒ์ด๋ค.
Package๋ ์ผ๋ฐ ๋ชจ๋ ์ฒ๋ผ, importํ์ฌ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋ค๋ง ์ฐจ์ด์ ์, 'ํด๋์ค ๊ฐ์ฒด'๋ฅผ ์ฌ์ฉํ ๋ ์ฒ๋ผ . ์ผ๋ก ํด๋น package์ ์ํ๋ ๋ชจ๋์ importํด์ฃผ๋ฉด ๋๋ค.
import pkg.mod1 from pkg.mod2 import func2 pkg.mod1.func2() func2()