๋ฐ์ดํฐ ๊ณผํ์ ์ํ ํ์ด์ฌ ํ๋ก๊ทธ๋๋ฐ ๊ต์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ ๊ฐ์์๋ฃ์ ๋๋ค.
๋ชจ๋์ ๊ฐ๋
- ๋ชจ๋(module)์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ง ๋์ค๋ ๊ฐ๋ ์ ์๋๋ค.
- 2014๋ ๊ตฌ๊ธGoogle์์๋ ๋ชจ๋ํ ํด๋์ ํ๋ฅผ ๋ง๋ค์ด ํ๋งคํ๋ ๋ด์ฉ์ ‘Ara’๋ผ๋ ํ๋ก์ ํธ๋ฅผ ์คํํ ์ ์ด ์๋ค. ํด๋์ ํ์ ๋ค์ด๊ฐ๋ ์นด๋ฉ๋ผ, ๋ฉ๋ชจ๋ฆฌ, ์์ดํ์ด ๋ฑ์ ํ๋์ ๋ธ๋ก์ผ๋ก ๊ฐ๋ณ ํ๋งคํ๊ณ ์กฐ๋ฆฝํ ์ ์๋ ํ๊ฒฝ์ ๋ง๋ค์ด์ฃผ๋ ํ๋ก์ ํธ์๋ค.
- ๋ ๊ณ ๋ธ๋ก์ ๊ทธ ํ๋๋ง์ผ๋ก๋ ์ ํ์ด์ง๋ง, ๋ค๋ฅธ ๋ธ๋ก๋ค๊ณผ ์ฐ๊ฒฐํ๊ฑฐ๋ ํฐ ๋ฐํ์ ์กฐ๋ฆฝํด ๋๊ฐ์ผ๋ก์จ ๊ฑฐ๋ํ ์ํ์ ๋ง๋ค ์ ์๋ค. ์ด๋ ๋ ๊ณ ๋ธ๋ก ํ๋ํ๋๊ฐ ๋ฐ๋ก ๋ชจ๋์ด๋ผ๊ณ ํ ์ ์๋ค.
- ์ด์ธ์๋ ์๋์ฐจ ๋ถํ์ด๋ ๋ฒฝ๋ ๋ฑ๋ ํ๋์ ๋ชจ๋ ๊ฐ๋ ์ผ๋ก ์ ์๋๋ค๊ณ ๋ณผ ์ ์๋ค.
- ํ๋ก๊ทธ๋๋ฐ์์ ๋ชจ๋์ด๋ผ๋ ๊ฐ๋
์ ๋ฌด์์ผ๊น?
- ํ๋ก๊ทธ๋๋ฐ์์์ ๋ชจ๋์ ์์ ํ๋ก๊ทธ๋จ ์กฐ๊ฐ์ ๋ปํ๋ค. ์ฆ, ํ๋ํ๋ ์ฐ๊ฒฐํด ์ด๋ค ๋ชฉ์ ์ ๊ฐ์ง ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ธฐ ์ํ ์์ ํ๋ก๊ทธ๋จ์ด๋ค. ๊ฐ ๋ชจ๋ ์ญ์ ์ ๋ง๋ค ์ญํ ์ด ์์ด์ ์๋ก ๋ค๋ฅธ ๋ชจ๋๊ณผ ์ธํฐํ์ด์ค interface๋ง ์ฐ๊ฒฐ๋๋ฉด ์ฌ์ฉํ ์ ์๋ค.
- ์ธํฐํ์ด์ค์ ๊ฐ๋
- ํจ์์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ ฅํ๋ ์ฝ์
- ๋ค์ ๋งํด ํด๋น ๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ชจ๋ ๊ฐ์ ์ฐ๊ฒฐ์ ์ํ ์ฝ์์ด ํ์ํ๋ฐ, ์ด๊ฒ์ ์ธํฐํ์ด์ค๋ผ๊ณ ํ๋ค.
- ์ฃผ๋ณ์์์ ๋ชจ๋ํํ์ฌ ์๋น์ค๋๊ณ ์๋ ํ๋ก๊ทธ๋จ
- ๋ํ์ ์ธ ์๊ฐ ์นด์นด ์ค ์๋น์ค์์ ์ ๊ณตํ๋ ๊ฒ์ ํ๋ก๊ทธ๋จ์ด๋ค.
- ์ค๋งํธํฐ์ ํตํด ์นด์นด์ค ๊ณ์ ์ผ๋ก ํน์ ํ ์นด์นด์ค ๊ฒ์์ ํ๋ฉด ๋๋ถ๋ถ ๋น์ทํ ์ธํฐํ์ด์ค๋ก ๊ฒ์์ด ์คํ๋๋ค. ์ด๋ ์นด์นด์ค์์ ๋ชจ๋ํ ๋ ํ๋ก๊ทธ๋จ์ ์ธํฐ๋ท์ ์ ๊ณตํจ์ผ๋ก์จ ๋ค์ํ ๊ฒ์ ๊ฐ๋ฐ์ฌ๊ฐ ์ด๊ฒ์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ด๋ ๊ฒ ๋ชจ๋ํ๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ํ๋ก๊ทธ๋จ์ด๋ ์์ ์ด ๋ง๋ ํ๋ก๊ทธ๋จ์ ๋งค์ฐ ์ฝ๊ฒ ์ฌ์ฉํ ์๋, ๋๋ ์ ๊ณตํ ์๋ ์๋ค.
random ๋ชจ๋
- ๋์๋ฅผ ์ฝ๊ฒ ์์ฑ์์ผ ์ฃผ๋ ๋ชจ๋์ด๋ค.
- >>> import random >>> random.randint(l, 1000) 198
- 1ใ1000 ์ค ์์์ ์ซ์๊ฐ ์์ฑ๋๋ค.
- ์ฌ๊ธฐ์๋ import ๊ตฌ๋ฌธ์ด ์ค์ํ๋ค. import ๊ตฌ๋ฌธ์ ๋ค์ ์๋ ๋ชจ๋, ์ฆ random์ ์ฌ์ฉํ ์ ์๋๋ก ํธ์ถํ๋ผ๋ ๋ช ๋ น์ด์ด๋ค.
- ์ฌ์ฉํ๋ค๋ ๋ง์ ํด๋น ๋ชจ๋์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ผ๋ ๋ป์ด๋ค. ๋ค์์ผ๋ก ํด๋น ๋ชจ๋์ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๊ทธ ๋ชจ๋ ์์ ์๋ ํจ์, ์ฌ๊ธฐ์๋ randint() ํจ์๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. randint() ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ด randint ํจ์์ ์ธํฐํ์ด์ค, ์ฆ ๋งค๊ฐ๋ณ์์ ์ค์ ์ด ์ด๋ป๊ฒ ๋์ด ์๋์ง ์์์ผ ํ๋ค.
ํจํค์ง์ ๊ฐ๋
- ํจํค์ง packages๋ ๋ชจ๋์ ๋ฌถ์์ด๋ค.
- from์ ๋ชจ๋์ ํธ์ถํ๊ธฐ ์ํด ํจํค์ง๋ถํฐ ํธ์ถํ๋ ๋ช ๋ น์ด์ด๋ค.
- ์์ ๊ฐ์ด ์ผ์ข ์ ๋๋ ํฐ๋ฆฌ์ฒ๋ผ ํ๋์ ํจํค์ง ์์ ์ฌ๋ฌ ๊ฐ ์ ๋ชจ๋์ด ์๋๋ฐ, ์ด ๋ชจ๋๋ค์ด ์๋ก ํฌํจ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ฑฐ๋ํ ํจํค์ง๋ฅผ ๋ง๋ ๋ค.
๋ชจ๋ ๋ง๋ค๊ธฐ ์ค์ต
- ํ์ด์ฌ์์๋. py ํ์ผ ์์ฒด๊ฐ ๋ชจ๋์ด๋ค.
- ๊ฐ์ฅ ์ฝ๊ฒ ํ์ด์ฌ ๋ชจ๋์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ํ์ฌ ์ค์ต ์ค์ธ ๋๋ ํฐ๋ฆฌ์์. py ํ์ผ์ ํ๋ ๋ง๋ค๊ณ , ๊ทธ ํ์ผ์ ํ์ํ ํจ์๋ฅผ ์ ์ฅํ๋ฉด ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ ํ์ด์ฌ ํ์ผ์ด๋ ํ์ด์ฌ ์ ธ์์ import๋ฌธ์ ์ฌ์ฉํ์ฌ ํด๋น ๋ชจ๋์ ํจ์๋ฅผ ์ฝ๊ฒ ๋ถ๋ฌ๋ผ ์ ์๋ค.
‘fah_converter.py’๋ก ์ ์ฅ
def covert_c_to_f(celcius_value):
return celcius_value * 9.0/5+32
ํด๋น๋ชจ๋์์ฌ์ฉํ๋ ์ฝ๋ (ํํ ํด๋ผ์ด์ธํธ ์ฝ๋๋ผ๊ณ ๋ถ๋ฆ)๋ฅผ ์์ ๊ฐ์ด ์์ฑํ์ฌ ‘module_ex.py'๋ก ์ ์ฅ
import fah_converter
print("Enter a celsius value:")
celsius = float(input())
fahrenheit = fah_converter.covert_c_to_f(celsius)
print("That's", fahrenheit, "degrees Fahrenheit.")
Enter a Celsius value:
10 #์ฌ์ฉ์ ์
๋ ฅ
That's 50.0 degrees Fahrenheit. #๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ
- ๊ฐ์ฅ ์ค์ํ ํต์ฌ ์ฝ๋๋ 1ํ์ import fah_converter๋ก, ๊ธฐ์กด์ ๋ง๋ ์ฝ๋ ํ์ผ์์. py๋ฅผ ๋นผ๊ณ ํด๋น ํ์ผ์ ์ด๋ฆ๋ง ์ ๋ ฅํ๋ฉด ํ์ผ ๋ด์ ํจ์๋ฅผ ๋ถ๋ฌ ์ฌ์ฉํ ์ ์๋ค.
- ์ฆ,. py ์์ฒด๊ฐ ํ๋์ ๋ชจ๋์ด ๋๋ค.
- ์ด ์ฝ๋์์๋ fah_converter๊ฐ ๋ชจ๋์ด๊ณ , ํด๋น ๋ชจ๋ ์์ covert_c_to_f() ํจ์๋ฅผ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๊ธฐ ์ํด์๋ 5ํ๊ณผ ๊ฐ์ด fahrenheit = fah_ converter.covert_c_to_f (celsius)๋ผ๊ณ ์์ฑํ๋ฉด ๋๋ค.
- ํต์ฌ์ ํธ์ถ๋ฐ๋ ๋ชจ๋๊ณผ ํธ์ถํ์ฌ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ด ๊ฐ์ ๋๋ ํฐ๋ฆฌ ์์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์๋ fah_converter.py์ module_ex.py๊ฐ ๊ฐ์ ๋๋ ํฐ๋ฆฌ ์์ ์์ด์ผ ๋ฌธ์ ์์ด ์คํ๋๋ค.
๋ค์์คํ์ด์ค
- ๋ค์์คํ์ด์ค๋ ๋ชจ๋ ํธ์ถ์ ๋ฒ์๋ฅผ ์ง์ ํ๋ ๊ฒ์ด๋ค.
- ํ๋์ ๋ชจ๋์์๋ ํด๋์ค, ํจ์, ๋ณ์๊ฐ ์์ผ๋ฉฐ import๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ค์ ํธ์ถํ ์ ์๋ค.
- ํ์ง๋ง ๋๋ก๋ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ํจ์ ์ด๋ฆ๊ณผ ํธ์ถ๋ ๋ชจ๋์ ํจ์ ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ ๊ฒ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ฒ์ด ์ข์ ์ต๊ด์ ์๋์ง๋ง ์ต์ํ์ง ์์ ๋ฐ์ํ๋ ์ค์์ผ ์๋ ์๊ณ ํ์์ ๋ฐ๋ผ ๊ธฐ์กด ํด๋์ค๋ฅผ ์์๋ฐ์ ์ฌ์ฉํ๋ค๊ฐ ๋ฐ์ํ ์๋ ์๋ค.
- ์ด ๊ฒฝ์ฐ ํธ์ถ๋ ๋ชจ๋์ ์ฌ์ฉ ๋ฒ์๋ฅผ ๋ช ํํ ์ง์ ํด์ผ ํ๋ค. ์ด๋ ์ฌ์ฉํ๋ ๊ฐ๋ ์ด ๋ฐ๋ก ๋ค์์คํ์ด์ค์ด๋ค.
- ๋ชจ๋ ์ด๋ฆ์ ์๋ฆฌ์์ค๋ฅผ ์์ฑํ์ฌ ๋ชจ๋ ์์ผ๋ก ์ฝ๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ
- ์๋ฆฌ์์ค๋ ์ผ์ข ์ ๋ณ์นญ์ผ๋ก ๋ชจ๋์ ์ด๋ฆ์ ๋ฐ๊ฟ ๋ถ๋ฅผ ๋ ์ฌ์ฉํ๋ค. ๋ชจ๋์ ์ด๋ฆ์ด ๋๋ฌด ๊ธธ๊ฑฐ๋ ๋ค๋ฅธ ์ฝ๋์ ํท๊ฐ๋ฆฌ๋ ์ด๋ฆ์ผ ๋ as ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ์ด๋ฆ์ ๊ฐ๋จํ๊ฒ ๋ฐ๊ฟ ์ฌ์ฉํ๋ฉด ๋๋ค.
import fah_converter as fah print(fah.covert_c_to_f(41.6))
106.8800000000000
- 1ํ์์ ์ด์ ์ ๋ง๋ fah_converter ๋ชจ๋์ fah๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ํธ์ถํ์๋ค.
- fah.covert_c_to_f(41.6) ์ฝ๋๋ก fah_converter ๋ชจ๋ ์์ covert_c_to f() ํจ์๋ฅผ ํธ์ถํ์๋ค.
- ์์ ํํ๋ก ํด๋น ๋ชจ๋ ์์ ์๋ ํจ์, ํด๋์ค, ๋ณ์๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
- ํ์ฌ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ๊ฐ์ ์ด๋ฆ์ ์ฝ๋๊ฐ ์๋๋ผ๋ ๋ชจ๋ ๋ด์์๋ง ํ์ ํ์ฌ ํธ์ถํด์ผ ํ๋ค.
from ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ชจ๋์์ ํน์ ํจ์ ๋๋ ํด๋์ค๋ง ํธ์ถํ๋ ๋ฐฉ๋ฒ
import covert_c_to_f
2 print(covert_c_to_f(41.6))
106.88000000000001
- ‘from ๋ชจ๋๋ช import ๋ชจ๋ ์์ ์๋ ํจ์๋ช ’์ ํํ๋ก ์์ฑํ๋ฉด ํด๋น ๋ชจ๋ ์์ ์๋ ํจ์๋ฅผ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์๋ค. ์ด์ ์ด ํจ์๋ ๋ณ๋์ ๋ชจ๋๋ช ์ ์จ ์ฃผ์ง ์์๋ ๋จ๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ์ฌ๊ธฐ์ ํ ๊ฐ์ง ์ฃผ์ํ ์ ์ from์ ๊ผญ ๋ชจ๋์ ํธ์ถํ๊ธฐ ์ํ ํค์๋๊ฐ ์๋๋ผ๋ ๊ฒ์ด๋ค. ํจํค์ง๋ฅผ ํธ์ถํ๊ฑฐ๋ ํด๋น ํจํค์ง ์์ ์๋ ๋ชจ๋์ ํธ์ถํ ๋๋ from ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ํจํค์ง์ ํจํค์ง, ํจํค์ง์ ๋ชจ๋ ๊ฐ์๋ ์๋ก ์ค์ฒฉ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์๊ณ ์ด ์ค์ฒฉ ๊ตฌ์กฐ๋ฅผ ํธ์ถํ๋ ๊ฒ์ด ๋ฐ๋ก from์ ์ญํ ์ด๋ค.
ํด๋น ๋ชจ๋ ์์ ์๋ ๋ชจ๋ ํจ์, ํด๋์ค, ๋ณ์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ณํ(*)๋ฅผ ์ฌ์ฉํ๊ธฐ
- ํด๋น ๋ชจ๋ ์์ ์๋ ๋ชจ๋ ํจ์, ํด๋์ค, ๋ณ์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ณํ(*)๋ฅผ ์ฌ์ฉํ๊ธฐ
- ์ผ๋ฐ์ ์ผ๋ก ์ปดํจํฐ์์ ๋ณํ๋ ๊ณฑ์ ์ ์๋ฏธ๋ ์์ง๋ง ๋ชจ๋ ๊ฒ์ด๋ผ๋ ๋ป๋ ์๋ค.
from fah_converter import * print(covert_c_to_f(41.6))
106.88000000000001
- ‘from ๋ชจ๋๋ช import ์’๋ผ๊ณ ์ ๋ ฅํ๋ฉด ํด๋น ๋ชจ๋ ์์ ์๋ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ํธ์ถํ๋ค๋ ๋ป์ด๋ค.
๊ฐ์ฅ ์ ํธํ๋ ๋ฐฉ๋ฒ
- ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์๋ฆฌ์์ค๋ฅผ ์์ฑํ์ฌ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ๊ฐ๊ฐ์ ํจ์๋ ํด๋์ค๊ฐ ์ด๋์ ๋์ค๋์ง๋ฅผ ๋ช ํํ ํํํ๋ ๊ฒ์ด ์ข๊ธฐ ๋๋ฌธ์ ๊ฐ์ ํจ์๋ผ๋ covert_c_to_f๋ณด๋ค fah.covert_c_to_f๋ผ๊ณ ํ๊ธฐํ๋ ๊ฒ์ด ์ฝ๋๋ฅผ ๋ณด๋ ์ ์ฅ์์๋ ์ฝ๋์ ์ถ์ฒ๋ฅผ ๋ช ํํ ์ ์ ์์ด์ ์ข๋ค.
๋ด์ฅ ๋ชจ๋์ ์ฌ์ฉ
- ํ์ด์ฌ์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฐํ๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ ๋ฌธ์ ์ฒ๋ฆฌ, ์น, ์ํ๊ณผ ๊ด๋ จ๋ ๋ค์ํ ๋ด์ฅ ๋ชจ๋์ ์ ๊ณตํ๋ฉฐ, ๋ณ๋ค๋ฅธ ์กฐ์น ์์ด import๋ฌธ ํ ์ค๋ก ์ฌ์ฉํ ์ ์๋ค.
- random ๋ชจ๋
- ์ด ๋ชจ๋ ์์๋ ์ ์ ๋ชจ๋์ ์์ฑํ๋ randint() ํจ์์ ์์์ ๋์๋ฅผ ์์ฑํ๋ random() ํจ์๊ฐ ์๋ค.
>>> import random >>> print(random.randint (0, 100)) # 0-100 ์ฌ์ด์ ์ ์ ๋์๋ฅผ ์์ฑ 7 >>> print(random.random()) # ์ผ๋ฐ์ ์ธ ๋์ ์์ฑ 0.056550421789531846
- time ๋ชจ๋
- ์๊ฐ๊ณผ ๊ด๋ จ๋ time ๋ชจ๋์ ์ผ๋ฐ์ ์ผ๋ก ์๊ฐ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ํ์ฌ ์๊ฐ์ ์๋ ค์ค๋ค.
- ๋ํ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ ํ์ฌ ์๊ฐ์ ์ ์ ์๋ค.
>>> import time >>> print (time.localtimeO) # ํ์ฌ ์๊ฐ ์ถ๋ ฅ time.struct_time(tm_year=2018, tm_mon=8, tm_mday=19, tm_hour=22, tm_min=9, tm_sec=21, tm_wday=6, tm_yday=231, tm_isdst=0)
- urlib ๋ชจ๋
- ์น๊ณผ ๊ด๋ จ๋ urllib ๋ชจ๋์ ์น ์ฃผ์์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์จ๋ค.
- ๋ํ์ ์ผ๋ก urllib์ request ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ํน์ URL์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๋ค. urllib.request.urlopen() ์ฝ๋์์ ๊ดํธ ์์ ํน์ ์น ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ฉด ํด๋น ์ฃผ์์ HTML ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
[์ฐธ๊ณ ]>>> import urllib.request >>> response = urllib.request.urlopen("<http://theteamlab.io>") >>> print(response.read())
- ์ด์ธ์๋ ๋ง์ ํ์ด์ฌ ๋ชจ๋์ด ์๋ค ๊ทธ๋ ๋ค๋ฉด ์ด ๋ชจ๋๋ค์ ์ด๋ป๊ฒ ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์์๊น?
- ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๊ตฌ๊ธ์์ ๊ฒ์ํ๋ ๊ฒ์ด๋ค. ํนํ ์์ด๋ก ๊ฒ์ํ๋ ๊ฒ์ด ์ข๋ค.
- ๐ก python time module run timeํ์ด์ฌ ์ฝ๋ฆฌ์์ ๋ฌธ์ํ๊ธฐ
- ํ์ด์ฌ ๊ฐ๋ฐ์์๊ฒ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ํ์ ์ธ ์ปค๋ฎค๋ํฐ
- ํ๋ก๊ทธ๋๋ฐ ์ํ์ ๊ฑธ๋ฆฐ ์๊ฐ์ ์์๋ด๋ ๋ชจ๋์ ์ฐพ์ ๋
ํจํค์ง์ ๊ตฌ์ฑ
- ํจํค์ง๋ ํ๋์ ๋ํ ํ๋ก์ ํธ๋ฅผ ์ํํ๊ธฐ ์ํ ๋ชจ๋์ ๋ฌถ์์ด๋ค.
- ๋ชจ๋์ ํ๋์ ํ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ํจํค์ง๋ ํ์ผ์ด ํฌํจ๋ ๋๋ ํฐ๋ฆฌ(ํด๋)๋ก ๊ตฌ์ฑ๋๋ค. ์ฆ, ์ฌ๋ฌ ๊ฐ์ , py ํ์ผ์ด ํ๋์ ๋๋ ํฐ๋ฆฌ์ ๋ค์ด๊ฐ ์๋ ๊ฒ์ ‘ํจํค์ง’๋ผ๊ณ ํ๋ค.
- ํํ ๋ค๋ฅธ ์ฌ๋์ด ๋ง๋ ํ๋ก๊ทธ๋จ์ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ library๋ผ๊ณ ํ๋๋ฐ. ํ์ด ์ฌ์์๋ ํจํค์ง๋ฅผ ํ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ดํดํ๋ฉด ๋๋ค. ํ์ด์ฌ์์ ์ฌ์ฉํ๋ ํ์ด์ฌ ์คํ์์ค ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ์ด๋ฌํ ํจํค์ง๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ํ์ด์ฌ์ ๋ชจ๋์ ๊ตฌ์ฑํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ํจํค์ง์๋ ์์ฝ์ด๊ฐ ์๋ค. ํจํค์ง์์ ํ ๊ฐ์ง ์ฃผ ์ํ ์ ์ ํ์ผ๋ช ์์ฒด๊ฐ ์์ฝ์ด๋ฅผ ๋ฐ๋์ ์ง์ผ์ผ๋ง ์คํ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ฐ๋ผ์ ํจํค์ง ๋ด์ ๋ช๋ช ํ์ผ์๋ init,__ main__ ๋ฑ์ ํค์๋ ํ์ผ๋ช ์ด ์ฌ์ฉ๋๋ค.
ํจํค์ง ๋ง๋ค๊ธฐ ์ค์ต
์ธํฐ๋ท์์ ์ฃผ์ ์ ๋ณด๋ฅผ ๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ , ํ์ํ ์ ๋ณด๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ
- ์ค์ ๋ก ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ฒ์ ์๋๊ณ ๋๋ต ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํจํค์ง๋ฅผ ๊ตฌ์ฑํ๋ค๋ ๊ฐ๋ ๋ง ์์๋ณด๊ธฐ ์ํ ์ค์ต์ด๋ค.
- ๋๋ ํฐ๋ฆฌ ๊ตฌ์ฑํ๊ธฐ
- ์ค์ต์์ ๋ง๋ค ํจํค์ง ์ด๋ฆ์ ‘roboadvisor’
- ํจํค์ง ์ด๋ฆ ๋๋ถ๋ถ์ ์๋ฌธ์๋ฅผ ์ฌ์ฉ ํ๊ธฐ ๋๋ฌธ์ ์๋ฌธ์๋ก ํจํค์ง ์ด๋ฆ์ ์ง์
- roboadvisor์๋ ์ธ ๊ฐ์ง ๊ธฐ๋ฅ์ด ์๋ค๊ณ ๊ฐ์
- ํจํค์ง๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๊ฐ ํจํค์ง ๋ด์์ ๋ค์ ์ธ๋ถ ํจํค์ง์ ๋ง์ถฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด๋ค. ๋จผ์ cmd ์ฐฝ์ ๋ค์ ๋ช ๋ น์ ์ ๋ ฅํ์ฌ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
- crawling mkdir
- database mkdir analysis
- cd roboadvisor mkdir
- analysis(๋ถ์): ํด๋น ์ ๋ณด๋ฅผ ๋ถ์ํ์ฌ ์๋ฏธ ์๋ ๊ฐ์ ๋ฝ์๋ด๋ ๊ธฐ๋ฅ
๋๋ ํฐ๋ฆฌ๋ณ๋ก ํ์ํ ๋ชจ๋ ๋ง๋ค๊ธฐ
- ํ๋์ ํจํค์ง๋ ์ค์ฒฉ๋ ๊ตฌ์กฐ๋ก ๋ง๋ค ์ ์์ผ๋ฏ๋ก ํจํค์ง ์์ ๋ ํ๋์ ํจํค์ง๊ฐ ๋ค์ด๊ฐ ์ ์๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ๊ฐ๊ฐ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ๋์ ํจํค์ง๋ก ์ ์ธํ๊ธฐ ์ํด์๋ ์์ฝ๋ ํ์ผ์ ๋ง๋ค์ด์ผ ํ๋ค.
- ๋ฐ๋ก _ _ init _ _.py ์ด๋ค.
- _ init _. py ํ์ผ์ ๊ฐ ๋๋ ํฐ๋ฆฌ๊ฐ ํจํค์ง์์ ๋ํ๋ด๋ ์์ฝ ํ์ผ์ด๋ค.
- ์์ ์ฌ์ง์ฒ๋ผ ๊ธฐ๋ณธ .py ๋ชจ๋ ํ์ผ๊ณผ ํจ๊ป ๊ฐ ๋๋ ํฐ๋ฆฌ์ _ init _.py๋ฅผ ์ถ๊ฐํ๋ฉด ํจํค์ง์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ง๋ค. ๊ฐ๊ฐ์ ๋๋ ํฐ๋ฆฌ ์์ .py ํ์ผ์ ๋ง๋ค์ด ๊ตฌ์ฑํ๋ค.
ํจํค์ง์ ๊ตฌ์กฐ ์ค๊ณ
๐ก ์ ์ฌ์ง์ ํจํค์ง ๊ตฌ์กฐ๋ ์์๋ก ์์ฑํ ๊ฒ์ด๋ค. ํจํค์ง์ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์๋ ์ค๊ณ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค. ํ์ ํจํค์ง๋ณ๋ก ํด์ผ ํ๋ ์ผ๊ณผ ํ์ ํจํค์ง์ ์์๋ ๋ชจ๋๋ค์ด ํด์ผ ํ ์ผ์ ๋ฐ๋ก ์ ์ํด ๊ฐ ๋ชจ๋์ ์ญํ ์ ๋ถ์ฌํ๋ ๊ฒ์ด๋ค.
๊ฐ ํ์ ํจํค์ง์ ํฌํจ๋ ๋ชจ๋์ ํ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํ ์ฝ๋ ์์ฑ
- ์ต์ํ ์คํ ์ฌ๋ถ๋ง ํ์ธํ๊ธฐ ์ํด ๊ฐ๋จํ ์ฝ๋๋ฅผ ์ ๋ ฅ
def series_test():
print("series")
def statics_test():
print("statics")
- ์ ๋๊ฐ์ ์ฝ๋๋ analysis ๋๋ ํฐ๋ฆฌ์ ์๋ series.py์ statics.py์ ๋ค์ด๊ฐ ์ฝ๋์ด๋ค.
>>> from roboadvisor.analysis import series
>>> series.series_test()
series
- ์ด๋ ๊ฒ ์์ฑํ ๋ชจ๋์ ์ค์ ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํ์ด์ฌ ์ ธ์์ ์๊ณผ ๊ฐ์ด ์ ๋ ฅํ๋ค.
- ์ด๋ roboadvisor์ ์์ ๋๋ ํฐ๋ฆฌ์์ ํ์ด์ฌ ์ ธ์ ์คํํด์ผ ์ ์์ ์ผ๋ก ์ํ๋๋ค.
- ์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด roboadvisor ๋๋ ํฐ๋ฆฌ ์์ ‘_ _ pycache _ _’๋ผ๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ฑ๋๋๋ฐ, ์ด๊ฒ์ ํ์ด์ฌ์ ์ธ์ด์ ํน์ฑ์ผ๋ก ์๊ธฐ๋ ๊ฒฐ๊ณผ์ด๋ค.
- ํ์ด์ฌ์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ด๋ฏ๋ก ์คํ ์ ์ ๋ณ๋์ ์ปดํ์ผ๋ฌ๋ฅผ ์คํ์ํค์ง๋ ์์ง๋ง, ์คํ ์์ ์ ์ปดํ์ผ์ด ์ด๋ฃจ์ด์ง๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ก ์ป์ด์ง ์ปดํ์ผ๋ ํ์ผ์ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ค. _ _ pycache _ _ ๋๋ ํฐ๋ฆฌ์๋ ํด๋น ํ๋ก๊ทธ๋จ์ด ์๋๋ ๋ ์ฌ์ฉํ๊ธฐ ์ํ ๋ชจ๋๋ค์ ์ปดํ์ผ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ค.
- ์ด๋ ๊ฒ ํ๋ฒ pycache ๋๋ ํฐ๋ฆฌ๊ฐ ์์ฑ๋๋ฉด ๊ทธ ์์ ์์ ํด๋น ๋ชจ๋์ ์์ ํด๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์๋์ง ์๋๋ค. ํด๋น ํ๋ก๊ทธ๋จ ๋๋ ํ์ด์ฌ ์ ธ์ด ์์ ํ ์ข ๋ฃํ ํ ์์ ํด์ผ ํด๋น ๋ชจ๋์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์๋๋ค. ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ด์ง๋ง ๋ด๋ถ์ ์ผ๋ก ์ปดํ์ผ ๊ณผ์ ๋ ๊ฑฐ์น๊ณ , ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ์ฌ๋ฌ ๊ฐ์ง ๊ณผ์ ์ ๊ฑฐ์น๋ค.
๋๋ ํฐ๋ฆฌ๋ณ๋ก _ _ init _ _.py ๊ตฌ์ฑํ๊ธฐ
- 3๋จ๊ณ์์๋ ๋๋ ํฐ๋ฆฌ๋ณ๋ก _ _ init _ _.py ํ์ผ์ ๊ตฌ์ฑํ๋ค.
- _ _ init _ _์ ํด๋น ๋๋ ํฐ๋ฆฌ๊ฐ ํ์ด์ฌ์ ํจํค์ง๋ผ๊ณ ์ ์ธํ๋ ์ด๊ธฐํ ์คํฌ๋ฆฝํธ์ด๋ค.
- _ _ init _ _.py ํ์ผ์ ํ์ด์ฌ์ ๊ฑฐ์ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ํ์ ์ธ ํ์ด์ฌ ๋จธ์ ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ scikit-learn์ ๊ฒฝ์ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฐ์ฅ ์์ ๋๋ ํฐ๋ฆฌ๋ถํฐ _ _ init _ _.py ํ์ผ์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
- _ _ init _ _.py ํ์ผ์ ํจํค์ง ๊ฐ๋ฐ์๋ ์ค์น ์ ํ์ธํด์ผ ํ ๋ด์ฉ ๋ฑ์ ๋ฉํ๋ฐ์ดํฐ๋ผ๊ณ ํ ์ ์๋ค.
- ํ์ง๋ง ๊ฐ์ฅ ์ค์ํ ๋ด์ฉ์ ์ด ํจํค์ง์ ๊ตฌ์กฐ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก _ _ init _ _.py ํ์ผ์๋ ๋ค์๊ณผ ๊ฐ์ด ํด๋น ํจํค์ง๊ฐ ํฌํจ๋ ๋ชจ๋์ ๊ดํ ์ ๋ณด๊ฐ ์๋ค.์๋ ์ฝ๋๋ฅผ roboadvisor ๋๋ ํฐ๋ฆฌ์ _ _ init _ _.py์ ์ ๋ ฅํด๋ณด์.
import analysis
import crawling
import database
__all__= ['analysis', 'crawling', 'database']
- roboadvisor ๋๋ ํฐ๋ฆฌ์๋ 3๊ฐ์ ํ์ ํจํค์ง, ์ฆ analysis, crawling, database๊ฐ ์๋ค.
- ์ด ๊ฐ๊ฐ์ ํจํค์ง๋ฅผ _ _ init _ _.py ์์ __all__๊ณผ import๋ฌธ์ ์ฌ์ฉํด ์ ์ธํด์ผ ํ๋ค. ๋ฐ๋ผ ์ _ _ all _ _์ด๋ผ๋ ๋ฆฌ์คํธํ์ ๋ณ์๋ฅผ ๋ง๋ค์ด ์ฐจ๋ก๋๋ก ํ์ ํจํค์ง์ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ , ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ ํ์ ํจํค์ง๋ฅผ import๋ฌธ์ผ๋ก ํธ์ถํ๋ค.
- ํ์ ํจํค์ง์ _ _ init _ _.py ํ์ผ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
from . import series
from . import statics
__all__= ['series', 'statics']
- ์๋ฅผ ๋ค์ด analysis ๋๋ ํฐ๋ฆฌ์ _ _ init _ _.py ํ์ผ์ ์ ์ฝ๋์ ๊ฐ์ด ๊ฐ ํจํค์ง์ ํฌํจ๋ ๋ชจ๋๋ช ์ ๋ชจ๋ ์์ฑํด์ผ ํ๋ค. ์๋นํ ๋ฒ๊ฑฐ๋ก์ด ์์ ์ด์ง๋ง ํจํค์ง๋ก ํ์ํ๊ธฐ ์ํด ๊ผญ ํด์ผ ํ๋ ์์ ์ด๋ฉฐ ํจํค์ง๋ณ๋ก ๋ชจ๋ ์ฒ๋ฆฌํด์ผ ํ๋ค.
- crawling๊ณผ database ๋๋ ํฐ๋ฆฌ์ _ init,py ํ์ผ์๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์ ๋ ฅํ๊ณ ์ ์ฅํ๋ค.
[์ฐธ๊ณ ]
- ‘from .’์ import๋ฌธ ์์ ๋ถ์ด๋ ์ด์ ๋ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ธ analysis์ ํจํค์ง๋ฅผ ํธ์ถํ๊ธฐ ์ํจ์ด๋ค. ‘from .’์ ๋ถ์ด์ง ์์ผ๋ฉด ์์ ๋๋ ํฐ๋ฆฌ์ธ roboadvisor์์ series๋ statics ํจํค์ง๋ฅผ ์ฐพ๊ฒ ๋์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
_ _ main _ _.py ํ์ผ ๋ง๋ค๊ธฐ
- 4๋จ๊ณ์์๋ ํจํค์ง๋ฅผ ํ ๋ฒ์ ์ฌ์ฉํ๊ธฐ ์ํด roboadvisor ๋๋ ํฐ๋ฆฌ์ _ _ main _ _.py ํ ์ผ์ ๋ง๋ ๋ค.
- _ _ main _ _.py ํ์ผ์ ๋ง๋๋ ์ด์ ๋ ํจํค์ง ์์ฒด๋ฅผ ์คํํ๊ธฐ ์ํด์์ด๋ค. ์ง ๊ธ๊น์ง ๊ณ์ ํ์ด์ฌ ํ์ผ๋ช ํํ์ธ .py ํ์ผ๋ก ๋ง๋ค์ด ์คํํ์๋ค. ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํจํค์ง ์ ์ฒด๋ฅผ ์คํํ๊ธฐ ์ํด ๋ง๋ค์ด์ผ ํ๋ ๊ฒ์ด _ _ main _ _.py ํ์ผ์ด๋ค.
- _ _ main _ _.py ํ์ผ์ ๊ตฌ์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํธ์คํด์ผ ํ๋ ์ฌ๋ฌ ๋ชจ๋์ from๊ณผ import๋ฌธ์ผ๋ก ํธ์ถํ ํ, if _ _ name _ == ‘ _ main _ _’ ์คํ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
from analysis.series import series_test
from crawling.parser import parser_test
if _ _ name _ _ == '_ _ main _ _':
series_test()
parser_test()
- ์คํํ๊ธฐ (ํจํค์ง ์ด๋ฆ๋ง ํธ์ถ)
- ๋ง์ง๋ง 5๋จ๊ณ์์๋ ํด๋น ํจํค์ง๋ฅผ ์คํํ๋ค.
- ๋ชจ๋ ์ฝ๋๋ฅผ ์์ฑํ ํ ํด๋น ํจํค์ง์ ์ต์์ ๋๋ ํฐ๋ฆฌ(์ด ์์์์๋ roboadvisor์ ์์ ๋๋ ํฐ๋ฆฌ)์์ ‘python ํจํค์ง๋ช '์ ์ ๋ ฅํ์ฌ ์คํํ๋ค.
python
roboadvisor series
parser
[์ฐธ๊ณ ]
- ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด roboadvisor ๋๋ ํฐ๋ฆฌ์์ ํจํค์ง๋ฅผ ์คํํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ๋ฐ๋์ ์ต์์ ๋๋ ํฐ๋ฆฌ์์ ํจํค์ง๋ฅผ ์คํํ๋ค.
ํจํค์ง ๋ค์์คํ์ด์ค
- ํจํค์ง ๋ด์์ ๋ชจ๋์ ์๋ก ํธ์ถํ ๋ ์ฌ์ฉํ๋ ํจํค์ง ๋ค์์คํ์ด์ค(packages namespace)
- ๋ชจ๋๊ณผ ๋ฌ๋ฆฌ ํจํค์ง์์์ ๋ค์์คํ์ด์ค๋ ํจ์ฌ ๋ ๋ง์ ์ค๊ฐ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฏ๋ก ์กฐ๊ธ ๋ณต์กํ๋ค.
- ํจํค์ง ๋ค์์คํ์ด์ค๋ ํฌ๊ฒ ์ ๋ ์ฐธ์กฐ์ ์๋ ์ฐธ์กฐ๋ก ๋๋๋ค.
- ์ ๋ ์ฐธ์กฐ๋ ์ ์ฒด ํจํค์ง์ ๊ตฌ์กฐ๋ฅผ ์๊ฐํด ๋ชจ๋์ ๊ฒฝ๋กpath๋ฅผ ๋ชจ๋ ํธ์คํ๋ ๊ฒ์ด๊ณ , ์๋ ์ฐธ์กฐ๋ ํธ์คํ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํธ์ถํ๋ ๊ฒ์ด๋ค.
์ ๋ ์ฐธ์กฐ
๐ก from roboadvisor.analysis import series
- ์ ์ฝ๋์์ from์ roboadvisor๋ถํฐ ์์ํ๋ค.
- ์ฆ ํจํค์ง ์ด๋ฆ๋ถํฐ ์์ํ์ฌ series๊น์ง ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ๋ค. ‘from ์ ์ฒด ํจํค์ง.์๋ธ ํจํค์ง import ๋ชจ๋’์ ํ์์ด๋ค.
- ์ด๋ ๊ฒ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ์ ๋ ฅํ๋ ๊ฒ์ ์ ๋ ์ฐธ์กฐ๋ผ๊ณ ํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ํจํค์ง ๋ด๋ถ์์ ๋ค๋ฅธ ํจํค์ง๋ฅผ ๋ถ๋ฅผ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ฉฐ,_ init ** _ .**py ํ์ผ์ ๋ง๋ค ๋๋ ์ ๋ ์ฐธ์กฐ๋ก ๋ชจ ์ ํธ์ถํ๋ ๊ฒ์ด ์ข๋ค.
- ํ ๊ฐ์ง ์ฃผ์ํ ์ ์ ๊ฐ์ฅ ์์์ ์๋ _ init ** _**.py ํ์ผ๋ ์์ ๋๋ ํฐ๋ฆฌ roboadvisor๋ฅผ ๋ฃ๋ ๊ฒ์ด ์ข๋ค.
__all__= ['analysis', 'crawling', 'database']
from roboadvisor import analysis
from roboadvisor import crawling
from roboadvisor import database
- ์์ฒ๋ผ ์์ฑํด์ผ ๋ค๋ฅธ ์๋ธ ๋ชจ๋์์๋ ๋ชจ๋์ ์ฝ๊ฒ ํธ์ถํ ์ ์๋ค.
์๋ ์ฐธ์กฐ
- ์๋ ์ฐธ์กฐ์ ํต์ฌ์ ํ์ฌ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ชจ๋์ ํธ์ถํ๋ ๊ฒ์ด๋ค.
from .series import series_test
from ..crawling.parser import parser_test
- ์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ์ฝ๋๋ .series์ ..crawling.parser์ด๋ค.
- ๋จผ์ ์ 1๊ฐ(.)๋ ํ์ฌ ๋๋ ํฐ๋ฆฌ๋ฅผ, ์ 2๊ฐ(..)๋ ๋ถ๋ชจ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ปํ๋ค.
- ํจํค์ง ๊ตฌ์กฐ์์ ๋ณด์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํจํค์ง ๊ตฌ์กฐ๋ผ๋ฉด ํ์ฌ ๋๋ ํฐ๋ฆฌ์์ series ๋ชจ๋ ์์ seriesJest ํจ์๋ฅผ ํธ์ถํ๋ผ๋ ๋ป์ด๋ค. ์ฆ, ํ์ฌ์ ๋๋ ํฐ๋ฆฌ๋ series ๋ชจ๋์ ํฌํจํ๊ณ ์๋ analysis์ด๋ค.
- ํ์ง๋ง ํจํค์ง ๋ด์์๋ ์๋ ์ฐธ์กฐ๋ก ํธ์ถํ๋ ๊ฒ์ ์ถ์ฒํ์ง ์๋๋ค.
- ์ฝ๋๋ฅผ ๊ฐ๋ตํ ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ํจํค์ง ์ ์ฒด๋ฅผ ๋ณด๋ ์ ์ฅ์์๋ ๋ชจ๋ ํจํค์ง์ ๊ฒฝ๋ก๋ฅผ ์ ํํ ๊ธฐ๋ก ํ๋ ๊ฒ์ด ์ข ๋ ์ดํดํ๊ธฐ ์ฝ๋ค. ์ด๊ฒ์ _ init ** _**.py ํ์ผ์ ์ ์ธํ ๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ๊ฐ๋ฅํ๋ฉด ํจํค์ง ๋ด์์ ๋ชจ๋์ ์ ์ํ ๋๋ ์ ๋ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๊ฐ์ํ๊ฒฝ์ ๊ฐ๋
- ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ํจํค์ง๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ธ ๊ฐ์ํ๊ฒฝ
- ๋ง์ฝ ํ ๋ฒ์ ํ๋์ ํ๋ก์ ํธ๋ง ์งํํ๋ ๊ฒ์ด ์๋๋ผ 2๊ฐ ์ด์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋๋ค๋ฉด ๊ฐ ํ๋ก์ ํธ์ ๋ง๋ ํ๋ก ๊ทธ๋๋ฐ ํ๊ฒฝ์ ์ค์ ํ๋ ๊ฒ์ด ์ข๋ค.
- ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ํ๋ก์ ํธ๋ ์น์ ๋ค๋ฃจ๋ ํ๋ก์ ํธ๋ ๊ทธ ์ฑ๊ฒฉ์ด ๋งค์ฐ ๋ค๋ฅด๋ค. ๋ฐ๋ผ์ ๊ฐ ํ๋ก์ ํธ์ ๋ง๋ ํ๊ฒฝ์ ์ค์ ํ์ฌ ์งํํด์ผ ํ๋ค.
- ํ์ด์ฌ์์๋ ์ด๋ฌํ ๊ฒฝ์ฐ๋ฅผ ์ง์ํ๊ธฐ ์ํด ๊ฐ์ํ๊ฒฝ์ด๋ผ๋ ๊ฐ๋ ์ผ๋ก ํ๋ก์ ํธ ํจํค์ง๋ฅผ ๊ด ๋ฆฌํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ด๋ค ํ๋ก์ ํธ๋ฅผ ์ํํ ๋๋ ํ์ด์ฌ ์ฝ๋๋ฅผ ์ํํ ๊ธฐ๋ณธ ์ธํฐํ๋ฆฌํฐ๋ฟ๋ง ์๋๋ผ ํ๋ก์ ํธ๋ณ๋ก ํ์ํ ์ถ๊ฐ ํจํค์ง๊น์ง ์ค์นํด์ผ ํ๋ค.
- ์ด๋ฌํ ํจํค์ง๋ฅผ ์ค์นํ ๋ ์๋ก ๋ค๋ฅธ ํ๋ก์ ํธ๊ฐ ์ํฅ์ ์ฃผ์ง ์๋๋ก ๋ ๋ฆฝ์ ์ธ ํ๋ก์ ํธ ์ํ ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์๋๋ฐ, ์ด๋ฅผ ‘๊ฐ์ํ๊ฒฝ’์ด๋ผ๊ณ ํ๋ค.
- ์ด ๊ฐ์ํ๊ฒฝ์ ๊ตฌ์ถํ๊ธฐ ์ํด ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ค. ๋ํ์ ์ธ ๊ฐ์ํ๊ฒฝ ๋๊ตฌ๋ก virtualenv์ conda๊ฐ ์๋ค.
- virtualenv๋ ํ์ด์ฌ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฐ์ํ๊ฒฝ ๋๊ตฌ๋ก pip์ ์ด์ฉํ์ฌ ์๋ก์ด ํจํค์ง๋ฅผ ์ค์นํ ์ ์๋ค. conda๋ ๊ต์ฌ์์ ์ฌ์ฉํ๋ ์ธํฐํ๋ฆฌํฐ์ธ miniconda์ ์ ์ฉ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ๋ก ๊ฐ์ํ๊ฒฝ ๊ด๋ฆฌ์ ํจํค์ง ์ค์น๋ฅผ ๊ฐ์ด ํ ์ ์๋ค.
- ์ผ๋ฐ์ ์ผ๋ก virtualenv์ pip์ ์ฌ์ฉํ์ฌ ์๋ก์ด ํจํค์ง๋ฅผ ์ค์นํ๋ ๊ฒ์ด ์ข๋ค.
- ํ์ง๋ง ์ด์์ฒด์ ๋๋ถ๋ถ์ด ์๋์ด๋ฏ๋ก ๊ต์ฌ์์๋ conda๋ฅผ ์ฌ์ฉํ์ฌ ์งํํ๋ค. ๋ํ, ํ์ด์ฌ ํจํค์ง๋ ๋๋ถ๋ถ ํ์ด์ฌ ์ฝ๋๋ฟ ์๋๋ผ C ์ฝ๋๋ฅผ ๊ฐ์ด ์ค์นํ ๋๊ฐ ๋ง์ ์ปดํ์ผ๋ C ํ์ผ์ ์ค์นํด์ผ ํ๋๋ฐ, pip์ ์ด๋ฅผ ์ง์ํด์ฃผ์ง ์์ ๋๊ฐ ๋ง๋ค. ๊ทธ์ ๋ฐํด conda๋ ์ด ๋ถ๋ถ๊น์ง ํ ๋ฒ์ ๋ชจ๋ ์ค์นํด์ฃผ๋ฏ๋ก ์ฒ์ ๊ฐ์ํ๊ฒฝ์ ์ด์ฉํ๋ ์ฌ๋์๊ฒ ์ข ๋ ์ ํฉํ๋ค.
๊ฐ์ํ๊ฒฝ ๋๊ตฌ ํน์ง
virtualenv + pip | - ๊ฐ์ฅ ๋ํ์ ์ธ ๊ฐ์ํ๊ฒฝ ๊ด๋ฆฌ ๋๊ตฌ, ๋ํผ๋ฐ์ค์ ํจํค์ง๊ฐ ๊ฐ์ฅ ๋ง์ |
conda | - ์์ฉ ๊ฐ์ํ๊ฒฝ ๋๊ตฌ์ธ miniconda ์ ๊ธฐ๋ณธ ๊ฐ์ํ๊ฒฝ ๋๊ตฌ, ์ค์น๊ฐ ์ฌ์ ์๋์์ ์ ์ฉ |
๊ฐ์ํ๊ฒฝ ์ค์ ํ๊ธฐ
conda ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ํ๊ฒฝ ์ค์ ํ๊ธฐ
- ๊ฐ์ํ๊ฒฝ ๋ง๋ค๊ธฐ
- ๋ค์ ๋ช ๋ น์ cmd ์ฐฝ์ ์ ๋ ฅ
- conda → ์คํ ๋ช ๋ น์ด
- create → ๊ฐ์ํ๊ฒฝ์ ๋ง๋๋ ์ธ์(argument)
- -n my_project ์์ -n์ name์ ์ค์๋ง์ด๊ณ , my_project๋ ๊ตฌ์ฑํ ๊ฐ์ํ๊ฒฝ ์ด๋ฆ์ด๋ค.
- python=3.4๋ ์ค์น๋๋ ํ์ด์ฌ์ ๋ฒ์ ์ด๋ค.
- ์ฆ, ์ ๋ช ๋ น์ด๋ฅผ ํด์ํ๋ฉด ‘my_project๋ผ๋ ์ด๋ฆ์ ๊ฐ์ํ๊ฒฝ์ python 3.4 ๋ฒ์ ์ผ๋ก ๋ง๋ค์ด๋ผ.’์ด๋ค.
- ‘Proceed ([y]/n)?’์์ y๋ฅผ ์ ๋ ฅํ๋ฉด ์ค์น๊ฐ ์์๋๋ค.
๊ฐ์ํ๊ฒฝ ์คํํ๊ธฐ
- ๊ตฌ์ฑํ ๊ฐ์ํ๊ฒฝ ์คํํ๊ธฐ
- ์คํ๋ฐฉ๋ฒ์ ๊ฐ์ํ๊ฒฝ์ ๋ง๋ค๋ฉด ๋ํ๋๋ ํ๋ฉด์ ์ด๋ฏธ ์ค๋ช ๋์ด ์๋ค.
๐ก activate my_project
- ์ด ์ฝ๋๋ my_project๋ผ๋ ๊ฐ์ํ๊ฒฝ์ ํ์ฑํactivateํ๋ผ๋ ๋ป์ด๋ค.
- ๊ตฌ์ฑ๋ ๊ฐ์ํ๊ฒฝ์ ์ด๋ฆ์ activate ๋ค์์ ๋ฃ์ผ๋ฉด ํด๋น ๊ฐ์ํ๊ฒฝ์ด ์คํ๋๊ณ , ์๋์ ๊ฐ์ด ํ๋กฌํํธ ์์ (my_project) ๋ผ๋ ๊ฐ์ํ๊ฒฝ ์ด๋ฆ์ด ๋ถ๋๋ค. ์ด์ ๋ถํฐ๋ ํด๋น ๊ฐ์ํ๊ฒฝ์ ์ธํฐํ๋ฆฌํฐ๋ง ์คํ ๋๋ค.
- ์ด ์ํ์์ ‘where ptyhon’ ์ ์ ๋ ฅํ๋ฉด ํ์ฌ ์คํ๋๋ ํ์ด์ฌ์ ์์น๊ฐ ์ด๋์ธ์ง ์ถ๋ ฅ
- ์คํ๋ ๊ฐ์ํ๊ฒฝ์ ์ข ๋ฃํ๊ธฐ ์ํด์๋ ‘deactivate’๋ฅผ ์ ๋ ฅ
๊ฐ์ํ๊ฒฝ ํจํค์ง ์ค์นํ๊ธฐ
- ํด๋น ๊ฐ์ํ๊ฒฝ์์ ์๋ก์ด ํจํค์ง๋ฅผ ์ค์นํด๋ณด๊ธฐ
- ํจํค์ง์ ์ข ๋ฅ๋ ๋งค์ฐ ๋ง๊ณ , ํ ์คํธํ ์ ์๋ ์ข ๋ฅ๋ ๋ง๋ค. ์ผ๋จ ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ ์ํด ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค
๐ก conda install matplotlib
๊ฐ์ํ๊ฒฝ ํจํค์ง ์ค์ตํ๊ธฐ
- ์ค์น๋ ํจํค์ง๋ฅผ ์คํ
- ์์์ ์ค์นํ matplotlib์ ๋ํ์ ์ธ ํ์ด์ฌ ๊ทธ๋ํ ๊ด๋ฆฌ ํจํค์ง๋ก, ์์ ๊ณผ ๊ฐ์ ๊ทธ๋ํ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ค. ํ์ฌ ๋ฐ์ดํฐ ๋ถ์์ ํ ๋ ๋ค์ํ ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉ๋๊ณ ์๋ค.
>>> import matplotlib.pyplot as pit
>>> pit.plot([1, 2, 3, 4])
[<matplotlib.lines.Line2D object at 0x000001E8CC52C080>]
>>> plt.ylabel('some numbers')
Text(0, 0.5, 'some numbers')
>>> plt.show()
- ์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊น๋ํ ๊ทธ๋ํ ํ๋ฉด์ ๋ณผ ์ ์๋ค.
- matplotlib์ ๋ ผ๋ฌธ์ ์ฐ๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐ์ดํฐ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค ๋ ๋งค์ฐ ์ ์ฉํ ๋ชจ๋์ด๋ค.
[์ฐธ๊ณ ]
jupyter ํจํค์ง
๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ ๋ ๋งค์ฐ ์ ์ฉํ ํจํค์ง๋ก jupyter๊ฐ ์๋ค.
๋จผ์ ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ ์ํด cmd ์ฐฝ์์ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
๐ก conda install jupyter
์ค์น๊ฐ ๋๋๋ฉด ‘jupyter notebook’์ ์ ๋ ฅํ์ฌ ์คํ์ํจ๋ค ์ด์ jupyter ํ๊ฒฝ์์ ์ฝ๋ฉํ ์ ์๋ค.
๐ก jupyter notebook
jupyter๋ฅผ ์คํํ๋ฉด ์น์์ ์ฝ๋ฉํ ์ ์๋ ํ๊ฒฝ์ด ๋ํ๋๋ค ์ฌ๊ธฐ์์ [New] ๋ฒํผ์ ํด๋ฆญํ์ฌ ์๋ก์ด Notebook ์ ์์ฑ ํ ํ ์ฝ๋ฉํ๊ณ [Ctri]+[Enter]๋ฅผ ๋๋ฅด๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค.