01. ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ
01. ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ ๊ด๋ จ
1. ํ์ด์ฌ ์ค์น(Anaconda)
ํ์ด์ฌ ์ ๋ฌด ์๋ํ๋ฅผ ์ํด์ ๋น์ฐํ๊ฒ๋ ๊ฐ์ฅ ๋จผ์ ํ์ด์ฌ์ ์ค์นํด์ผํฉ๋๋ค.
ํ์ด์ฌ ์ค์น ๋ฐฉ๋ฒ 2๊ฐ์ง
ํ์ด์ฌ์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์์ ํ์ด์ฌ ์ค์น (ํ์ด์ฌ ๊ณต์ ํํ์ด์ง)
- ์๋์ฝ๋ค ํจํค์ง ์ค์น (์๋์ฝ๋ค ๊ณต์ ํํ์ด์ง)
์๋์ฝ๋ค ํจํค์ง ์ถ์ฒ ์ด์
์ ๋ ์์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ์๋์ฝ๋ค ํจํค์ง๋ฅผ ์ถ์ฒ๋๋ฆฝ๋๋ค.
๊ทธ ์ด์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
๋ฐ์ดํฐ ๊ณผํ ๋ฐ ๋ฅ๋ฌ๋ ๊ด๋ จ๋ ์ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ค์นํ ํ์ ์์.
ํ์ด์ฌ์์ ์ด๋ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํฐ๋ฏธ๋ ์ฐฝ์์ pip install ๋ช ๋ น์ด๋ก ์ค์นํด์ฃผ์ด์ผํจ.
์ด ๋, ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ณผ์ ์ถฉ๋ ์ฌ๋ถ๋ฅผ ํ์ธํ์ง ์์ผ๋ฏ๋ก, ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น๊ฐ ์ ์๋๋ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํจ.
์๋์ฝ๋ค๋ ๋ฐ์ดํฐ ๊ณผํ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์ด๋ฏธ ์ค์น๋์ด ์์ด, ์์ ๊ฐ์ ์์ ์ด ์ค์ด๋ค ๋ฟ๋ง์๋๋ผ, conda๋ผ๋ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ํ์ฌ ํ๊ฒฝ๊ณผ ์ถฉ๋ ์ฌ๋ถ๋ฅผ ์ค์น ์์ ํ์ธํ์ฌ, ๋ฌธ์ ๊ฐ ์ ์.
์ํํ๋ ํ๋ก์ ํธ์ ๋ฐ๋ผ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค์ด ๊ด๋ฆฌํ ์ ์์
์๋ฅผ ๋ค์ด, A ํ๋ก์ ํธ์๋ python2
๋ฅผ ์ฌ์ฉํด์ผํ๊ณ , B ํ๋ก์ ํธ์๋ python3
์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์.
์ด๋ ๊ฐ ํ๋ก์ ํธ์ ๋ง๋ ๊ฐ์์ ํ๊ฒฝ์ ๋ง๋ค์ด, ๋ฒ์ ์ ๋ฐ๋ฅธ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํ ์ ์์.
์๋์ฝ๋ค ์ค์น๋ฐฉ๋ฒ (Windows OS)
์๋์ ๋งํฌ ํน์ ANACONDA๋ฅผ ์ง์ ๊ฒ์ํ์ ์ ๊ณต์ํํ์ด์ง์ ์ ์ํ ํ, ๋ค์ด๋ก๋ ๋ฒํผ์ ๋๋ฌ์ค๋๋ค.
www.anaconda.com/products/individual
๋ค์ด๋ก๋๊ฐ ์๋ฃ๋์์ผ๋ฉด, Setupํ์ผ์ ์คํ์์ผ ์ค๋๋ค.
๊ทธ ๋ค์๋ถํฐ๋ ์๋์ ๊ทธ๋ฆผ์ ๋ณด์๊ณ ํ๋์์ผ๋ก ํ์๋ ๋ฒํผ์ ์ฐจ๋ก๋๋ก ํด๋ฆญํด์ฃผ์ธ์.
2. IDE๋?
์ค๋ ๋ฐฐ์๋ณผ ๋ด์ฉ์ ํ์ด์ฌ ๊ฐ๋ฐ์ ๋์์ฃผ๋ ์ ์ฉํ ๋๊ตฌ IDE(Integrated Development Environment)์ ๋๋ค.
์ง๋ ๊ธ์์ ํ์ด์ฌ๊ณผ ์๋์ฝ๋ค์ ๋ํด์ ์์๋ณด์๊ณ , ์๋ง๋ ์ฌ๋ฌ๋ถ๋ค์ ๋ ์ ์ฉํ ์๋์ฝ๋ค๋ฅผ ์ค์นํ์ จ์ ๊ฒ์ ๋๋ค.
ํ์ด์ฌ์ ์ค์นํ๊ฑฐ๋, ์๋์ฝ๋ค๋ฅผ ์ค์นํ์ ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ์ฝ๋๋ฅผ ์์ฑ&์คํํ ์ ์๋ IDLE Shell์ด ์์ต๋๋ค.
ํ์ง๋ง ๋ง์น ๋ฉ๋ชจ์ฅ์ ์ฝ๋ฉ์ ํ๋ ๋๋์ ์ฃผ๊ธฐ ๋๋ฌธ์, ์ฌ์ฉํ๊ธฐ๊ฐ ๋งค์ฐ๋งค์ฐ ๋ถํธํฉ๋๋ค.
๊ทธ๋์!
์ฐ๋ฆฌ๋ ์ง๊ธ๋ถํฐ ํจ์จ์ ์ธ ํ์ด์ฌ ์ฝ๋ฉ์ ์ํด์ IDE๋ผ ๋ถ๋ฆฌ๋ ๊ฒ์ ๋ํด์ ์์๋ณด๊ณ ๋ฌด์์ ์ฌ์ฉํ ์ง ์ ํด๋ณด๋ ์๊ฐ์ ๊ฐ์ง๊ฒ ์ต๋๋ค.
IDE๋ ๋ฌด์์ธ๊ฐ
IDE๊ฐ ๋ญ์ง ์์๋ณด๊ธฐ ์ํด ๋ค์ด๋ฒ ์ง์๋ฐฑ๊ณผ๋ฅผ ๊ฒ์ํด๋ณด์์ต๋๋ค.
IDE [Integrated Development Environment]
ํจ์จ์ ์ผ๋ก ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ ํตํฉ๊ฐ๋ฐํ๊ฒฝ ์ํํธ์จ์ด ์ดํ๋ฆฌ์ผ์ด์ ์ธํฐํ์ด์ค์ด๋ค.
์ฝ๋ ํธ์ง๊ธฐ, ๋๋ฒ๊ฑฐ, ์ปดํ์ผ๋ฌ, ์ธํฐํ๋ฆฌํฐ ๋ฑ์ ํฌํจํ๊ณ ๊ฐ๋ฐ์์๊ฒ ์ ๊ณตํ๋ค.
์์ ์ค๋ช ์ ์ ์ ์์ ์ง์์ผ๋ก ๋ณด์ถฉ ์ค๋ช ํ์๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ฝ๋ ํธ์ง๊ธฐ
์ฝ๋๋ฅผ ์๋ก๋ฌ๋ก ์์๊ฒ, ์๋ ์์ฑ, ์๋ ๋ค์ฌ์ฐ๊ธฐ, ๋ง์ถค๋ฒ ๊ฒ์ฌ ๋ฑ์ ๊ธฐ๋ฅ์ผ๋ก ์ฝ๋ ํธ์ง์ ์ฝ๊ฒ ํด์ฃผ๋ ์ญํ
๋๋ฒ๊ฑฐ
์ฝ๋ฉ์ ํ ๋, ์ฝ๋๊ฐ ์ ๋์๊ฐ๋์ง, ๋ณ์์๋ ์ด๋ค ๊ฐ์ด ๋ค์ด๊ฐ ์๋์ง ๋ชจ๋ํฐ๋ง ํด์ฃผ๋ ์ญํ
์ปดํ์ผ๋ฌ
์์ฑ๋ ์ฝ๋ ์ ์ฒด๋ฅผ ์ปดํจํฐ๊ฐ ์์๋จน๊ธฐ ์ฌ์ด ์ธ์ด(๊ธฐ๊ณ์ด)๋ก ๋ฒ์ญํด์ ์๋์์ผ์ฃผ๋ ์ญํ
์ธํฐํ๋ฆฌํฐ
์ฝ๋๋ฅผ ํ ์ค ํ ์ค ์คํ์์ผ์ฃผ๋ ์ญํ
ํ์ด์ฌ IDE ์ฌ์ฉ ์์
๊ทธ๋ ๋ค๋ฉด ํ์ฌ ํ์ด์ฌ ์ ์ ๋ค์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ IDE๋ ๋ฌด์์ผ๊น์?
ํ ์ค๋ฌธ ์กฐ์ฌ์์ 2500๊ฐ ์ด์์ ์๋ต (์ต๋ 3๊ฐ ์ค๋ณต ์ ํ)์ผ๋ก ํต๊ณ๋ฅผ ๋ด๋ณด์์ ๋์ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค๊ณ ํฉ๋๋ค.
1์๋ ์๋์ฝ๋ค์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ ์น๊ธฐ๋ฐ IDE์ธ Jupyter Notebook์ด ์ฐจ์งํ๋ค์.
๊ทธ๋ฆฌ๊ณ 2์๋ ์ต๊ทผ ๋ง์ ๋ถ๋ค์ด ์ฌ์ฉํ๊ณ ๊ณ์๋ VS Code๊ฐ, 3์๋ ํ์ด์ฌ ์ ์ฉ IDE์ธ PyCharm์ด ์ฐจ์งํ์ต๋๋ค.
ํ์ด์ฌ IDE Top3 ์ฅ๋จ์
๊ฐ IDE๋ค์ ์ฅ๋จ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
์๋์ ์ฅ์ ์ผ๋ก ์ธํด ์ฃผ๋ก ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค์ ๋ง์ด ํ์ฉ๋จ
์ฅ์
- ์ฝ๋๋ฅผ ๋ธ๋ก ๋จ์๋ก ์ชผ๊ฐ์ด ์์ฑ, ์คํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก๋ฐ๋ก ํ์ธ ๊ฐ๋ฅ
- ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด ํ์ ๊ทธ๋ํ๋ฅผ ์ฆ์ ํ์ธ ๊ฐ๋ฅ
๋จ์
- ๋๋ฒ๊น ๊ธฐ๋ฅ์ด ์์
- ์น ๊ธฐ๋ฐ์ด๋ฏ๋ก ํญ์ ๋ชจ๋ ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ์คํํด์ผ ํจ
ipynb
๋ผ๋ ์ ์ฉ ํ์ฅ์๋ฅผ ์ฌ์ฉํด์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๊ธฐ๊ฐ ์ด๋ ค์ (VS Code์์๋ ๋๋ ๊ฒ ํ์ธ)
๋ง์ดํฌ๋ก ์ํํธ์์ ๋ง๋ ์ฝ๋ ํธ์ง๊ธฐ (ํ์์ด IDE๊ฐ ์๋์์..?!)
ํ์ฅ ๊ธฐ๋ฅ์ ์๋ ๊ต์ฅํ ๋ง๊ณ , ์ด๋ฅผ ํตํด ๋ค์ํ ์ข ๋ฅ์ ์ธ์ด๋ฅผ ์ง์ํ์ฌ ์ฌ์ค์ ์ค IDE๊ธ์ ์์น์ ๋๋ฌ
์ฅ์
- ์์ ๋ฌด๋ฃ
- ๊ฐ๋ณ๊ณ ์์ ์๋๊ฐ ๋น ๋ฆ
- ํ์ฅ ํ๋ก๊ทธ๋จ ์ค์น๋ฅผ ํตํด ๋ค์ํ ์ธ์ด ์ฝ๋ฉ ๊ฐ๋ฅ (๊ทธ ์ค ํ๋๊ฐ ํ์ด์ฌ)
- ํ๊ตญ์ด ํจ์น ๊ฐ๋ฅ
- ์ฝ๋ ํธ์ง UI๊ฐ ์ฌํํ๊ณ ์์๋ณด๊ธฐ ์ฌ์
๋จ์
PyCharm์ ๋นํด ํ์ด์ฌ ์ฝ๋ฉ ์, ๊ธฐ๋ฅ์ด ์กฐ๊ธ ๋ชจ์๋๋ค๊ณ ํ๋๋ฐ ์ ๋ ์์ง๊น์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ฅ์
- ์ฝ๋๋ณ๋ก ํ์ด์ฌ ๋ฒ์ ์ ํ ๊ฐ๋ฅ
- GUI๋ก ํธ๋ฆฌํ๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(ํจํค์ง) ์ค์น ๊ฐ๋ฅ
- ํ์ด์ฌ ์ฝ๋ฉ์ ์ต์ ํ
๋จ์
- ์ค์ง Python ์ ์ฉ IDE
- ํ๋ก๊ทธ๋จ์ด ๋ฌด๊ฑฐ์์ ์์ํ ๋ ์ค๋๊ฑธ๋ฆฐ๋ค๊ณ ํจ
- ๋ฌด๋ฃ ๋ฒ์ ์ธ Community์ ์ ๋ฃ ๋ฒ์ ์ธ Professional์ผ๋ก ๋๋จ
3. VS CODE ์ค์น
ํํ์ด์ง ์ ์ ๋ฐ ๋ค์ด๋ก๋
์ค์น
๋จ ํ์ค๋ก ์ค๋ช ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ค์ด๋ฐ๊ณ ์์ถ์ ํ๊ณ ์คํ์ ํ๋ฉด ๋ฐ๋ก ์คํ์ด ๋ฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋งค์ฐ ์ฝ์ต๋๋ค.
๋ค์ด๋ก๋ ํ์ผ ์คํ ํ, ๋์ํจ, ๋ค์, ๋ค์, ๋ค์, ์ค์น, ๋ง์นจ
ํ์ ์ต์คํ ์ ์ค์น
VS code์์ ํ์ด์ฌ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ช ๊ฐ์ง EXTENSIONS์ ์ค์นํด์ฃผ์ด์ผ ํฉ๋๋ค.
VScode์์ ํ์ด์ฌ์ ์ฌ์ฉํ๊ธฐ ์ํด์ ๊ผญ ์ค์น๊ฐ ํ์ํ ์ต์คํ ์ ๋ค์ ์๋์ ๊ฐ์ต๋๋ค.
์ถ์ฒ ์ต์คํ ์ ์ค์น
์์ ๊ฐ์ EXTENSIONS ํญ์์ korean
์ ๊ฒ์ํ๋ฉด ์๋์ ๊ฐ์ ์ต์คํ
์
์ด ๋์ต๋๋ค.
Install ๋ฒํผ์ ๋๋ฅด๋ฉด ํ๋ฉด์ ์ค๋ฅธ์ชฝ ์๋์ Restart๋ผ๊ณ ๋์ค๋๋ฐ ๋๋ฅด์๋ฉด VS Code๊ฐ ์ฌ์์ ๋๋ฉด์ ์น์ํ ํ๊ธ์ด ํผ์ณ์ง๋๋ค.
ํน์๋ ์ค์นํ์ จ๋๋ฐ '๋๋ ์ฝ๋ฉํ๋ฉด์ ์์ด ๊ณต๋ถ๋ ํ ๊ฑฐ์ผ!' ํ์๋ ๋ถ์ ๋ค์ ํด๋น ์ต์คํ ์ ์ ํด๋ฆญํ๋ฉด ์ ๊ฑฐ ๋ฒํผ์ด ๋์ค๋ ์ฐธ๊ณ ํ์ธ์~
๋ค์์ผ๋ก ์๊ฐ๋๋ฆด Extension์ Material Theme์ ๋๋ค. VScode ์ข์ธก์ Extensions ํญ์ ํด๋ฆญํ์ ํ, ๊ฒ์์ฐฝ์ ์๋์ ๊ฐ์ด material theme์ด๋ผ๊ณ ๊ฒ์ํด์ค๋๋ค.
๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ด ๋ ๊ฐ์ง Extension์ด ๋ํ๋ ํ ๋ฐ ๊ทธ๋ฅ ๋ ๋ค Install ํด์ฃผ์ธ์. ์ด์ฐจํผ ์ด์ด์ ์ค์นํ ํ ๋๊น์!
์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด ์ฌ์ฉ๋ฐฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค.
- ์ข์ธกํ๋จ์ ์ค์ ์์ด์ฝ์ ํด๋ฆญ ํ, Color Theme์ ์ ํ
- ์๋จ์ ์ถ๋ ฅ๋๋ ์ฌ๋ฌ ํ ๋ง๋ค์ ํด๋ฆญํด๋ณด๋ฉด์ ๋ง์์ ๋๋ ํ ๋ง๋ฅผ ์ ํํด์ฃผ๋ฉด ๋!
์ฐธ ์ฝ์ฃ ?
์ธ๋ฒ์งธ๋ก ์๊ฐ๋๋ฆด Extension์ Material Icon Theme์ ๋๋ค. ์ด Extension์ ์ฝ๋ฉ์ ์ค์ง์ ์ผ๋ก ๋์์ด ๋์ง๋ ์์ง๋ง ๊ทธ๋ฅ ํ์๊ธฐ์ ๋ณด์ด๋ ํด๋์ ํ์ผ์ด ์๋ป๋ณด์ฌ์ ์ฌ์ฉํฉ๋๋ค.
์ค์น ์ ๊ณผ ํ์ ๋น๊ต ์ฌ์ง์ ๋๋ค. ๋ณด๋ฉด ์์๊ฒ ์ง๋ง ์ ์ฉ ์ ์๋ ์์ด์ฝ์ด ์๋ ๊ฒ์ ์๋๋๋๋ค.
์ค๋ ๋ง์ง๋ง์ผ๋ก ์๊ฐ๋๋ฆด Extension์ indent-rainbow ์ ๋๋ค. ์ด๋ฆ์์ ๋ฑ ๋๋์ด ์ค์๊ฒ ์ง๋ง indent(๋ค์ฌ์ฐ๊ธฐ)๋ฅผ ํ ๋, ๋ฌด์ง๊ฐ ์์ผ๋ก ๊ตฌ๋ถ์ ํด์ฃผ๋ Extension์ ๋๋ค.
์ค์น ์ ๊ณผ ํ์ ์ด๋ฏธ์ง๋ ์๋์ ๊ฐ์ต๋๋ค. indent ๋ง๋ค ๋ ธ๋์, ์ด๋ก์, ๋นจ๊ฐ์, ํ๋์์ด ๋ฐ๋ณต๋๋ต๋๋ค.
4. VS CODE ์ฌ์ฉ๋ฒ (๊ธฐ์ด)
์ง๋ ์๊ฐ์ VS code๋ฅผ ์ค์นํ๊ณ , ํ์ด์ฌ ์ฝ๋ฉ์ ์ํด ํ์ด์ฌ ๊ด๋ จ Extension ๋ช๊ฐ์ง๋ฅผ ์ค์นํด๋ณด์์ต๋๋ค.
์ด๋ฒ ์๊ฐ์๋ VS cdoe๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์, ์ฃผ์ ๊ธฐ๋ฅ๋ค์ ์์๋ณด๊ฒ ์ต๋๋ค.
์ถ๊ฐ๋ก ์กฐ๊ธ ์ค์ ํ ๊ฒ๋ค์ด ์์ด์ ๊ทธ ๋ถ๋ถ๋ ๊ฐ๋ตํ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
ํด๋ ์์ฑ & Python ํ์ผ ๋ง๋ค๊ธฐ
๊ฐ์ฅ ์ฒ์ํ ๊ฒ์ ํ์ด์ฌ ํ์ผ์ด๋ ๊ธฐํ ํ์ผ๋ค์ ์ ๋ถ ๋ฃ์ด๋๋ ํ๋์ ํ๋ก์ ํธ์ฉ ํด๋๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์์น๋ ์ํ์๋ ์ด๋ ๊ณณ์ด๋ ์๊ด์์ต๋๋ค. ์ด๋ฆ์ ์ ๊ฐ ํ ์คํธํด๋ณด๋ ํ๊ธ๋ก ๋ง๋์ ๋ ์๋ํ์ง๋ง ์ฌ๋งํ๋ฉด ์์ด๋ก ํด์ฃผ์ธ์.
๋ณดํต ์ธ๊ตญ ํ๋ก๊ทธ๋จ๋ค์ ํ๊ธ์ด๋ ์ ์นํด์ ์ค๋ฅ๊ฐ ์๊ธฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ฑฐ๋ ์..
๊ทธ๋ฆฌ๊ณ ํด๋๋ฅผ ์์ฑํ์ง ์๊ณ ๊ทธ๋ฅ ๋ฐํํ๋ฉด์ด๋ ๊ธฐ์กด ํด๋๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง ์ถ์ฒ๋๋ฆฌ์ง ์์์.
๋์ค์ ํ์ผ์ ์ฐพ์ ๋๋ ํ๋ค๊ณ , ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์๋ ์ง๊ด์ฑ์ด ๋จ์ด์ง๋๊น์!
ํด๋๋ฅผ ๋ง๋์ จ์ผ๋ฉด ๋ฉ๋ด ํ ์์ ํ์ผ-์ด๊ธฐ๋ฅผ ์ ํํ์ ์ ์์ฑํ์ ํด๋๋ฅผ ์ด์ด์ฃผ์ธ์.
๊ทธ๋ฌ๋ฉด ์์ ๊ทธ๋ฆผ์ฒ๋ผ ํ๋ฉด์ด ๋์ฌํ
๋ฐ์. ์ข์ธก ์๋จ์ ๋ณด์๋ฉด +
ํ์๊ฐ ์๋ ์์ด์ฝ์ด 2๊ฐ ๋ณด์ด์ค ๊ฑฐ์์.
์ผ์ชฝ์ด ํ์ผ์ ์์ฑํ๋ ์์ด์ฝ์ด๊ณ , ์ค๋ฅธ์ชฝ์ด ํด๋๋ฅผ ์์ฑํ๋ ์์ด์ฝ์ ๋๋ค. (๋ฌผ๋ก ์ฐ๋ฆฌ๊ฐ ๋ฐฉ๊ธ ๋ง๋ ํ๋ก์ ํธ ํด๋ ์์์)
ํ์ด์ฌ ํ์ผ(.py
)์ ๋ง๋ค๊ธฐ ์ํด์๋ ํ์ผ ์์ฑ ์์ด์ฝ์ ํด๋ฆญ ํ, ํ์ผ ์ด๋ฆ.py๋ก ์ด๋ฆ์ ์ง์ด์ฃผ์ธ์.
์ ๋ ex_hello.py
๋ก ํ์ด์ฌ ํ์ผ์ ์์ฑํ์ต๋๋ค.
๋ง์ฝ์ ํ์ผ ์ด๋ฆ์ .py
๋ฅผ ๋ถ์ด์ง ์์ผ์
จ๋ค๋ฉด ๋นํฉํ์ง ๋ง์๊ณ , ๋ง๋์ ํ์ผ์ ์ฐํด๋ฆญ ํ์
์ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ๋ก .py
๋ฅผ ์ถ๊ฐํด์ฃผ์๋ฉด ๋ฉ๋๋ค!
ํ์ด์ฌ ํ์ผ ์ฝ๋ฉ ํ ์คํํด๋ณด๊ธฐ
์! ์ด์ ๋๋์ด ํ์ด์ฌ ์ธ์ด๋ก ์ฝ๋ฉ์ ํ ์ค ํด๋ด ์๋ค.
print("hello python")
์์ฃผ ์ง๊ด์ ์ธ ํ์ด์ฌ ๋ต๊ฒ "hello python"์ ์ถ๋ ฅํด ๋ฌ๋ผ๋ ๋ด์ฉ์ ๋๋ค.
์ฐ์ธก ์๋จ์ ์ด๋ก์ ์ฌ์ ๋ฒํผ์ ๋๋ฌ์, ์ฝ๋๋ฅผ ์คํ์ํค๊ธฐ ์ ์!
๋ง์ฝ ์๋์ฝ๋ค๋ฅผ ์ค์นํ์
จ๋ค๋ฉด ์ข์ธก ํ๋จ์ Python 3.8.3 64-bit('base':conda)
๋ผ๊ณ ๋์ ์๋ ๊ฒ์ ๋ณด์ค ์ ์์ํ
๋ฐ์. ์ด๊ฒ์ ์๋์ฝ๋ค๋ฅผ ์ค์นํ๋ฉด ๊ธฐ๋ณธ์ผ๋ก ๊ตฌ์ถ๋๋ ์ธํฐํ๋ฆฌํฐ ํ๊ฒฝ(environment)์
๋๋ค. ๋์ค์ ๋ฐฐ์ฐ์๊ฒ ์ง๋ง conda install
์ ์ด์ฉํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ฉด ์ฌ๊ธฐ 'base'์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์ค์น๋๋๋ฐ, ๋ง์ฝ ๋ค๋ฅธ ํ๊ฒฝ์ ์ ํํ์ ๋ค๋ฉด ์ ์๋ํ๋ ์ฝ๋๊ฐ ์ค๋ฅ๊ฐ ๋ฐ ์ ์์ผ๋ ์ ๊ฒฝ์จ ์ฃผ์
์ผํด์.
๋ง์ฝ python์ ๋ฐ๋ก ์ค์นํ์ จ๊ฑฐ๋, ๋ณ๋๋ก ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ์ ๋ถ๋ค์ ์ข์ธก ํ๋จ์ ๋ฒ์ ์ ํด๋ฆญํ์๋ฉด ์์ ๊ทธ๋ฆผ์ฒ๋ผ ์ฌ๋ฌ๊ฐ์ง ํ๊ฒฝ์ ์ ํํ์ค ์ ์๋ ์ฐฝ์ด ๋ํ๋ ๊ฑฐ์์.
์ค๋ฅ ํด๊ฒฐ (๊ธฐ๋ณธ ํฐ๋ฏธ๋ ์ค์ )
๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์์์ ์ฐ์ธก ์๋จ์ ์ฝ๋ ์คํ ๋ฒํผ (์ด๋ก์ ์ฌ์ ๋ฒํผ)์ ๋๋ฅด์๋ฉด ์๋ง๋ ํ๋จ์ ์๋์ ๊ฐ์ ๊ธ์จ๋ค์ด ๋ฐ ๊ฑฐ์์.
(Window OS๋ ์ด๋ฐ ํ์์ด ๋ํ๋ฌ๊ณ , Mac OS๋ ์ค์นํ์ง๊ฐ ์ค๋๋์ด์ ๋จ๋์ง ์๋จ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.)
์คํ์ด ๋๊ธด ํ๋๋ฐ ๊ณ์ ๋นจ๊ฐ ๊ธ์จ๊ฐ ๋จ๋๊ฒ ๋ง์์ ์๋ญ๋๋ค.
๋ง์ ์ํ ์ฐฉ์ค ๋์ ์์๋ธ ์์ธ์ VS code ์ค์น ์, ๊ธฐ๋ณธ ํฐ๋ฏธ๋์ด powershell
์ด๋ผ๋ ๊ฒ์
๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
.Ctrl+Shift+P๋ฅผ ๋๋ฌ์ Command Pallete๋ฅผ ์ผ ํ, Terminal: Select Default Shell
์ ์
๋ ฅํ์ฌ ์ ํ
ํญ๋ชฉ๋ค ์ค, Command Prompt
๋ฅผ ์ ํ
Terminal ์ฌ์คํ
์ฃผ์ํ ์
๊ตฌ๊ธ์ 'vscode anaconda ์ด๊ธฐ์ค์ '์ด๋ผ๊ณ ๊ฒ์ํ๋ฉด ๋์ค๋ ๋ธ๋ก๊ทธ ์ค ํ ๊ณณ์์, Code Runner Extension
์ ์ค์นํ๋ผ๊ณ ๋์ต๋๋ค.
์ ์ ๊ฒฝ์ฐ์ ์ด๊ฑธ ์ค์นํ๊ณ ๋๋๊น ์ฝ๋ ์คํํ ๋๋ง๋ค ํฐ๋ฏธ๋์ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ๊ฒ์ด ์๋๋ผ, ์๋์ฒ๋ผ ์ถ๋ ฅ ํญ์ ํตํด ์ด๋ ๊ฒ ๋์์ต๋๋ค.
๋ง์ฝ Code Runner Extension์ ์ค์นํ์ จ๋ค๋ฉด ์ผ๋จ ๋ค์ ์ ๊ฑฐํ์๋๊ฒ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
5. VS CODE ์ฌ์ฉ๋ฒ (๋๋ฒ๊น )
์ค๋์ ์ด์ฌํ ํ๋ก๊ทธ๋๋ฐ์ ์์ํ ๋๋ฐ์์ธ ๋๋ฒ๊น (Debugging)์ ๋ํด์ ์ค๋ช ๋๋ฆฌ๊ณ VS code์์ ์ด๋ป๊ฒ ํจ์จ์ ์ธ ๋๋ฒ๊น ์ ํ ์ ์๋์ง ํจ๊ป ์์๋ณด๋ ์๊ฐ์ ๊ฐ์ง๊ฒ ์ต๋๋ค.
๋๋ฒ๊ทธ(debug)๋?
๋๋ฒ๊ทธ๋ "๋ฒ๋ ๋ฅผ ์ก๋ค"๋ผ๋ ๋ป์ผ๋ก ํ๋ก๊ทธ๋จ์์ ์๋์น ์๊ฒ ์คํ๋๋ ์ค๋ฅ๋ฅผ ์์ ํ๋ ์์ ์ ๋ปํฉ๋๋ค.
๋จ๋ฒ์ ์๊ฐํ ๊ฒ์ ์๋ฒฝํ๊ฒ ์ฝ๋ฉํ๋ ๊ฒ์ ์ด๋ ค์ด ์ผ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ์ ์ด๋ณด์๊ฒ๋ ์งง์ ๋ช ์ค์ ์ฝ๋์์ ์กฐ์ฐจ ๋น๋ฒํ๊ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฃ .
๋ฌผ๋ก ๋ ์ค๋ ฅ์ด ์ฌ๋ผ๊ฐ๋ฉด ๊ทธ ์์ค์ ๋ง๋ ์ด๋ ต๊ณ ๋ณต์กํ ์ฝ๋๋ฅผ ์์ฑํด์ผํ๊ธฐ์ ๋๋ฒ๊น ์ ๊ฐ๋ฐ์์ ์์ํ ์์ ๋ผ๊ณ ๋ ํ ์ ์๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ง๊ธ๊น์ง ์ด๋ค ๋ณ์ ์์ ์๋ ๊ฐ์ ํ์ธ ํ๊ธฐ ์ํด์๋ print()
ํจ์๋ฅผ ์ด์ฉํด์ ํฐ๋ฏธ๋ ์ฐฝ์์ ํ์ธํด์์ต๋๋ค.
์ด๋ ๊ฒ ๊ฐ๋จํ ์ฝ๋๋ ์ฒ์๋ถํฐ ๋๊น์ง ์คํ์ํค๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฅํ์ง๋ง, ๋ง์ฝ ์๋ฐฑ, ์์ฒ ์ค์ ์ฝ๋๋ ๊ทธ๋ฐ ๋ฐฉ๋ฒ์ ๋๋ฌด ๋นํจ์จ ์ ์ด๊ฒ ์ฃ ?
VS CODE ๋๋ฒ๊น ์ ์ํ ์ค์
๊ฐ๋จํ ์ฝ๋๋ฅผ ํตํด VS CODE์์ ์ด๋ป๊ฒ ๋๋ฒ๊น ํ ์ ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ VS CODE๋ฅผ ์ผ์ ์๋์ ์ฝ๋๋ฅผ ๋ณต๋ถํด์ฃผ์ธ์.
๊ฐ์๋ฆฌ("๋ฉ๋ฉ")๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉด "๊ฐ๊ฐ ์ง๋ค"๋ผ๋ ๋ฌธ์ฅ์ ์ถ๋ ฅํ๊ณ , ๊ทธ ์ธ์ ๊ฒฝ์ฐ๋ "๋ค๋ฅธ ๋๋ฌผ์ด๊ตฌ๋"๋ผ๋ ๋ฌธ์ฅ์ ์ถ๋ ฅํ๋ ์ฝ๋์ ๋๋ค.
def find_dog(sound):
if sound == "๋ฉ๋ฉ":
return("๊ฐ๊ฐ ์ง๋ค")
else:
return("๋ค๋ฅธ ๋๋ฌผ์ด๊ตฌ๋")
sound = "์ผ์น"
find_result = find_dog(sound)
print(find_result)
์ฝ๋๋ฅผ ์ ๋ ฅํ์ ํ, ํ๋ฉด ์ผ์ชฝ์ ๋ฒ๋ ์ ์ฌ์๋ฒํผ์ ํฉ์ณ๋์ ๋ฏํ ์์ด์ฝ์ ํด๋ฆญํด์ฃผ์ธ์.
๊ทธ๋ฌ๋ฉด ํ๋์์ผ๋ก '[์คํ ๋ฐ ๋๋ฒ๊ทธ]
' ๋ฒํผ์ด ๋์ค๋๋ฐ ์ด๊ฑธ ํด๋ฆญํด์ฃผ์ธ์.
๋ฒํผ์ ํด๋ฆญํ์๋ฉด ์๋์ ๊ฐ์ด ํ๋ฉด ์๋จ์ ์ ํ์ฐฝ์ด ๋จ๋๋ฐ Python File์ ๋๋ฌ์ฃผ์๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ ์ ํ๋จ์ ํ๋์ ์ํ๋ฐ๊ฐ ๋ถ์์์ผ๋ก ๋ฐ๋์๋ค๊ฐ ์๋ ์ํ๋ก ๋์์ค๋ฉด์ ํฐ๋ฏธ๋ ์ฐฝ์ ์ฝ๋ ์คํ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธ ํ์ค ์ ์์ํ ๋ฐ์. ์ฌ์ค ์ด๋ ๊ฒ๋ง ํ๋ฉด ์ฐ์ธก ์๋จ์ ์ด๋ก์ ์คํ ๋ฒํผ์ ๋๋ฅธ ๊ฒ๊ณผ ๋ค๋ฅธ ๊ฒ์ด ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ ๊น
ํญ์ ์ด๋ ๊ฒ Python File์ ์ ํํ๋ ๋ฒ๊ฑฐ๋ก์์ ์์ ๊ธฐ ์ํด ์๋์ ๊ฐ์ด ์ค์ ํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
- ์คํ ๋ฐ ๋๋ฒ๊ทธ ๋ฒํผ ๋ฐ์
launch.json
ํ์ผ ๋ง๋ค๊ธฐ ๋ฅผ ํด๋ฆญํ ํ, ์์ ๋์ผํ๊ฒ Python File์ ์ ํ. - ,
launch.json
ํ์ผ์ด ์๋ก์ด ํญ์ผ๋ก ๋จ๋ฉด ๊ทธ๋ฅ ์ข ๋ฃ. (ํด๋น ํ๋ก์ ํธ ํด๋ ๋ด์.vscode
์์ ์ ์ฅ๋์ด ์์)
(๋จ, ์ด ์ค์ ์ ๊ฐ ํ๋ก์ ํธ ํด๋์์๋ง ์ ํจํ๋ฉฐ, ๋ค๋ฅธ ํ๋ก์ ํธ ํด๋๋ฅผ ์์ฑ ์ ๋ค์ ์ค์ ์ด ํ์ํจ.)
์ค์ ์ด ์๋ฃ๋๋ฉด ์๊น์ ์คํ ๋ฐ ๋๋ฒ๊ทธ ๋ฒํผ์ด ์์ด์ง๊ณ ์ด๋ก์ Run
๋ฒํผ๊ณผ Python: Current File
์ด ์๊ธด ๊ฒ์ ๋ณด์ค ์ ์์ต๋๋ค.
์๋์ ๋ณ์(VARIABLES
), ์กฐ์ฌ์(WATCH
), ํธ์ถ ์คํ(CALL STACK
)์ด๋ผ๋ ์ฐฝ์ด 3๊ฐ๋ ์ถ๊ฐ๋์๋๋ฐ ์ด๊ฑด ์๋์์ ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ๊น์ง ๋ฐ๋ผ ์ค์ จ์ผ๋ฉด ์ด์ ๋๋ฒ๊น ์ ํ์ํ ์ ํ ์ด ๋ชจ๋ ๋๋ฌ์ต๋๋ค.
์ง๊ธ ๋ถํฐ๋ ์ด๋ป๊ฒ ๋๋ฒ๊น ์ ํ ์ ์๋์ง ํจ๊ป ์์๋ณด๊ฒ ์ต๋๋ค.
VS CODE ๋๋ฒ๊น
์ค๋จ์ (Break Point) ์ง์ ํ๊ธฐ
์ฝ๋์ ๋ผ์ธ๋๋ฒ ์ผ์ชฝ์ ๊ณต๊ฐ์ ์ปค์๋ฅผ ์ฌ๋ฆฌ๋ฉด Break Point๋ฅผ ์ฐ์ ์ ์์ต๋๋ค. ์ค๋จ์ ์ ์ฐ๋ ๊ฒ์ ํด๋น ๋ผ์ธ ์ด์ ๊น์ง๋ง ์คํ์ํค๊ธฐ ์ํจ์ ๋๋ค. ์ฆ, ๋นจ๊ฐ์ ์ ์ผ๋ก ํ์ํ ๋ผ์ธ ์ ๊น์ง ์ฝ๋๊ฐ ์คํ๋๊ธฐ๋ฅผ ์ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
Run ๋ฒํผ ํด๋ฆญ(๋๋ฒ๊น ์คํ)
์ด๋ฒ์ ๊ฐ์ฅ ์ฒซ ๋ผ์ธ์ ์ค๋จ์ ์ ์ฐ๊ณ ์ข์ธก ์๋จ์ Run ๋ฒํผ์ ๋๋ฌ๋ณด๊ฒ ์ต๋๋ค. (์ฐ์ธก ์๋จ์ด ์๋์ ์ฃผ์)
์๋์ ๊ฐ์ ํ๋ฉด์ด ์ถ๋ ฅ๋ฉ๋๋ค. ํ์ฌ๋ ์ฒซ ์ค์ ์ฝ๋๋ ์คํ๋์ง ์์ ์ํ์ ๋๋ค. ์ฌ๊ธฐ์ ๋ค์ ์ฝ๋๋ฅผ ํ ์ค์ฉ ์คํ์์ผ์ฃผ๋ ค๋ฉด ๋นจ๊ฐ์์ผ๋ก ํ์ํ ์์ด์ฝ์ ํด๋ฆญํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
์ฌ๋ฌ๋ถ๋ค๋ ๋๋ฌ๋ณด์๋ฉด์ ์ฝ๋ ์คํ ์์๊ฐ ์ด๋ป๊ฒ ํ๋ฌ๊ฐ๋์ง, ์ผ์ชฝ์ ๋ณ์์ฐฝ๊ณผ ํธ์ถ ์คํ ์ฐฝ์ด ์ด๋ป๊ฒ ๋ณํ๋์ง ๊ด์ฐฐ ํด๋ณด์ธ์.
8๋ฒ ์ค์ ์ฝ๋๋ฅผ ์คํ์ํค๊ณ ๋๋ฉด sound: '์ผ์น'์ด๋ผ๋ ๋ณ์๊ฐ ์ถ๊ฐ๋๋ ๊ฒ๋ ํ์ธํด๋ณด์๊ณ , ๊ฐ์ฅ ๋ง์ง๋ง 11๋ฒ ์ค ์คํ ์ง์ ์๋ ์ด๋ค ๋ณ์๋ค์ด ์๊ฒผ๋์ง๋ ํ์ธํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
์ฌ๊ธฐ์ ์ ๊น
๋ณ์(
variables
) ์ฐฝ์ ๋ํ๋์๋ ๋ณ์๋ฅผ ๋๋ธํด๋ฆญํ๋ฉด ๊ฐ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ. ๋ค์ ์ฝ๋๋ถํฐ ๋ณ๊ฒฝ๋ ๊ฐ์ผ๋ก ์งํํจ์(
def
) ๋ถ๋ถ์ด ์คํ๋ ๋๋ ํธ์ถ ์คํ์ ํตํด์ ์ด๋๋ฅผ ํตํด์ ํจ์๊ฐ ํธ์ถ๋์๋์ง๋ ํ์ธ ๊ฐ๋ฅ
์กฐ์ฌ์(WATCH) ์ฌ์ฉ๋ฒ
์์ 1, 2๋ฒ ๋จ๊ณ๋ง ์ ์ฌ์ฉํ์ ๋ ์ถฉ๋ถํ์ง๋ง, ์กฐ์ฌ์ ์ฌ์ฉ๋ฒ๋ ์์๋์๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
์กฐ์ฌ์ ์ฐฝ์ ์ปค์๋ฅผ ์ฌ๋ฆฌ์๋ฉด ์๋์ ๊ฐ์ด +
์์ด์ฝ์ด ๋ํ๋ฉ๋๋ค. ์ด๊ฑธ ํด๋ฆญํด์ฃผ์ธ์.
ํด๋ฆญํ๋ฉด ์ ๋ ฅ์ฐฝ์ด ๋จ๋๋ฐ, ์ฌ๊ธฐ์ ํ์ธํ๊ณ ์ถ์ ๋ณ์๋ช ์ ์ ๋ ฅํด์ค๋๋ค.
์ ๋ sound
์ find_result
๋ฅผ ์
๋ ฅํด๋ณด์์ต๋๋ค. ํ์ฌ๋ ๋๋ฒ๊น
์ ์์ํ์ง๋ง ์๋ฌด๊ฒ๋ ์คํ๋์ง ์์ ์ํ์ฌ์ ํด๋น ๋ณ์๋ค์ด ์ ์๋์ง ์์ ์ํ๋ผ๋ฉฐ ์๋ฌ๋ฅผ ์ถ๋ ฅํ๊ณ ์์ต๋๋ค.
์ญ์ญ ํ ์ค์ฉ ์คํ์์ผ๋ณด๋ฉด ์ฝ๋๊ฐ ์งํ๋จ์ ๋ฐ๋ผ ๋ณ์์ ๊ฐ์ด ๋ค์ด๊ฐ์๋ ๊ฒ์ ํ์ธ ํ์ค ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ๋ด๊ฐ ๊ด์ฐฐํ๊ณ ์ถ์ ๋ณ์๊ฐ ์ด๋ป๊ฒ ๋ณํ๋์ง ์ง์คํด์ ๋ณผ ๋ ์ ์ฉํ ๊ฒ ๊ฐ์์.