๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ํ์ดํ์ผ๋ก ๊ฒฌ๊ณ ํ๊ณ ์์ ํ ํ์ด์ฌ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
Python์ผ๋ก ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ, ์ ๋ฐฐ์์ผ ํ ๊น์โ
ํ๋. ์ ์ง๋ณด์๊ฐ ์ฝ๋ค!
์ ์ฐจ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ฝ๋ ์์ ์ ํ๋ํ๋ ์ฐพ์ ์์ ํด์ผ ํ๊ณ ์์ ํ ๋ถ๋ถ์ ์์ด๋ฒ๋ฆฌ๊ธฐ ์ฝ์ง๋ง, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์์ ํด์ผ ํ ๋ถ๋ถ์ด ๋ชจ๋ํ๋์ด ์์ผ๋ฏ๋ก ํด๋น ๋ชจ๋์ ์ฐพ์์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฆ ์ ์ง๋ณด์๊ฐ ์ฝ๋ค๋ ๊ฒ์ด์ฃ . ๋ํ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์์น์ ๋ฐ๋ผ ์ถ์ํ, ์บก์ํ๊ฐ ๋ ํด๋์ค๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ํด๋น ํด๋์ค ๋ด๋ถ ๋ก์ง์ ๋ํ ๊น์ ์ดํด ์์ด ์ฝ๊ฒ ๊ฐ์ ธ์์ ์ฌ์ฉํ ์ ์๊ณ ์์์ ํตํด ํ์ฅํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋. ์์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค!
ํ์ด์ฌ์ผ๋ก ๋ฅ๋ฌ๋, ๋จธ์ ๋ฌ๋, ๋ฐ์ดํฐ ๊ณผํ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌํํ๊ฑฐ๋ ์ฐ๊ตฌํ ๋, ์ฝ๋์ ์๋ฏธ ๋ถ์๊ณผ ํ๋ฆฌ๋ฏธํฐ ๋ฐ ๋ชจ๋ธ์ ๋ฐ๊พธ์ด ๊ฐ๋ฉด์ ๋์กฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ ํด๋น ์ฝ๋๋ฅผ ์ ์ฐจ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์์ฑํ๋ฉด ์ฝ๋ ์ ๋ฆฌ๊ฐ ์๋์ด ์์ฐ์ฑ์ด ๋จ์ด์ง๋๋ค. ์ด๋ฌํ ์ฝ๋๋ฅผ ์ค์ ์ฐ๊ตฌ ์ํฉ๊ณผ ์๋ฏธ์ ์ผ๋ก ๊ฐ๊น๊ฒ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์์ฑํ๋ฉด ๊ฐ๋
์ฑ ์๊ณ ์์ฐ์ฑ ๋์ ์ฝ๋๋ก ์์ฑํ ์ ์์ต๋๋ค.
์
. ์์
์ฉ ๋ํ ์ํํธ์จ์ด ๊ฐ๋ฐ ๊ฐ๋ฅ!
ํ์ด์ฌ์ผ๋ก ์น ๊ฐ๋ฐ์ ํ ๋ django, flask, fastapi ๋ฑ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ 1๋ฒ์ ์ด์ ๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ฉํ์ฌ ๊ฒฌ๊ณ ํ ์ํํธ์จ์ด ์ ํ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฌํ ์ด์ ๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ ์์
์ฉ ๋ํ ์ํํธ์จ์ด ์ ํ์ ๊ฐ๋ฐํ ๋ ์ ๋ง ๋ง์ด ์ฐ์ด๋ ๊ธฐ๋ฒ์
๋๋ค. ๋ฐ๋ผ์ ํ์ด์ฌ์ ํตํด ํ๋์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ ๋ค๋ฉด ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋
์ ํ์์ฃ .
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์,
๊ฒฌ๊ณ ํ๊ณ ์์ ํ๊ณ , ํ์ฅ์ฑ ์๋ ๊ฐ๋ฐ์!
Python ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก
์น ๊ฐ๋ฐ, ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค, ๋จธ์ ๋ฌ๋, ๋ฅ๋ฌ๋ ํ์ฉ๊น์ง!
๋์ ์์ฐ์ฑ๊ณผ ์์ ์ฑ์ ์๋ํ๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ!
ํ์ด์ฌ์ ํตํด ์๋ฒฝํ๊ฒ ํ์ตํด ๋ณด์ธ์.
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋๊ท๋ชจ ์ํํธ์จ์ด ๊ฐ๋ฐ์ด๋ ์์ ์ฑ์ด ์๊ตฌ๋๋ ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ๋ฟ๋ง ์๋๋ผ ๊ฐ๋ฐ๊ณผ ๋ณด์๊ฐ ๊ฐํธํ๋ฉฐ, ๋ณด๋ค ์ง๊ด์ ์ธ ์ฝ๋ ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ฅ์ ์ด ์์ต๋๋ค.
Python์ด๋ผ๋ ์ง๊ด์ ์ธ ๊ฐ๋ฐ ๋๊ตฌ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์กฐํฉ์ ๊ฐ๋ฐ์ ํจ์จ์ฑ๊ณผ ์ง๊ด์ฑ์ ๋ชจ๋ ๋ถ๋ฌ์ฌ ์ ์์ ๊ฒ์
๋๋ค.
์ด๋ฐ ๋ถ๋ค์ด ๋ค์ผ๋ฉด ์ข์ต๋๋ค
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์
๋ฌธ์
OOP์ ๊ฐ๋
์ด
๋ฌด์์ธ์ง ์๊ณ ์ถ์ ๋ถ
ํ์
์ฌ์ฉ์
์์ ํ๊ณ ๊ฒฌ๊ณ ํ๊ฒ
ํ์ด์ฌ์ ํ์ฉํ์๊ณ ์ถ์ ๋ถ
class ๋ฌธ๋ฒ์ด ์ด๋ ค์ฐ์ ๋ถ
์กฐ๊ฑด๋ฌธ, ํจ์, ๋ณ์๋ ์๋๋ฐ class๋ฅผ ์ฌ์ฉํ ์ค ๋ชจ๋ฅด๋ ๋ถ
์ค๋ฌด์
๋จธ์ ๋ฌ๋, ์น ๊ฐ๋ฐ ๋ฑ
OOP๋ฅผ ์ค๋ฌด์
์ ์ฉํ๊ณ ์ถ์ ๋ถ
์๋์ ๋ค ๊ฐ์ง ๊ฐ๋
์ ๊ฐ์์ ๋ชจ๋ ๋
น์์ต๋๋ค ๐งจ
ํ๋. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ดํด.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ ์ค์ ์ธ์์ ๊ฐ๊น๊ฒ ๋ชจ๋ธ๋งํ์ฌ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ, ์ ์ง๋ณด์ ์ฐ์์ฑ, ์์ฐ์ฑ์ ์ฆ๋์ํค๋ ์ฝ๋ฉ ๊ธฐ๋ฒ์
๋๋ค. ์ค์ ์ฐ์ํ ์ํํธ์จ์ด ์ ํ๋ค์ด ๊ฐ์ฒด์งํฅ์ ์งํค๋ฉฐ ๋ง๋ค์ด์ ธ ์์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ ๋ฌด์์ธ์ง ์ดํดํ๊ณ OOP ์์น์ ๋ฐ๋ผ Robot ์ค๊ณ๋๋ฅผ ๋ง๋ค๋ฉด์ ์ค์ ๋ก ์ ์ฉ์ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง ์๋ ค๋๋ฆฝ๋๋ค. ์ด ๊ณผ์ ์ผ๋ก ์์ ํ๊ณ ํ์ฅ์ฑ ์๋, ๊ฒฌ๊ณ ํ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋ ๊ฒ์
๋๋ค. ๋ฟ๋ง ์๋๋ผ ์ค์ ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฏธ ์๋ ๊ฒ์ ๊ฐ๋ฐํ ๋ ์ด๋ป๊ฒ ์ ์ฉ์ด ๋๋์ง ๋ณด์ฌ๋๋ฆฝ๋๋ค.
๋. Python์์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๋ฐฉ๋ฒ.
๋จ์ํ class๋ง ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ์๋๋๋ค. OOP ๊ธฐ๋ณธ ์์น์ ์งํค๋ฉฐ class๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆฝ๋๋ค. ์ด๋ฅผ ์ํด ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ฝ๋ ์ดํฐ ์ฌ์ฉ๋ฒ์ ์ตํ๋ ๊ฒ๋ถํฐ ์์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ OOP ์์น์ธ ์บก์ํ, ์๋ํ, ์์, ๋คํ์ฑ, ์ปดํฌ์ง์
๋ฑ ํ๋ํ๋ ์ง์ ์ฝ๋๋ก ๊ฐ์ด ์น๋ฉด์ ์ดํดํ๊ฒ ๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ์ปดํจํฐ ๊ณตํ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ์๋ฃ๊ตฌ์กฐ์ธ Stack๊ณผ Queue๋ฅผ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด ๋ณด๋ฉด์ ์ค์ ์ ์ฉ๊น์ง ํ ์ ์์ต๋๋ค.
์
. ํ์
์๋ Python์์ typing์ ํ๋ ๋ฐฉ๋ฒ.
์ฝ๊ณ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ๊ณผ ํ์
ํ์ด ์๋ ํ์ด์ฌ์ผ๋ก ๊ฐ๋ฐํ ๊ฒฝ์ฐ ๋ ์ ์ ์ฝ๋๋ก ๋ ๋ง์ ์์
์ ์ํํ ์ ์์ผ๋ฉฐ, ๋๋ถ์ ์์ฒญ๋ ์์ฐ๋ ฅ์ ์๋ํฉ๋๋ค. ํ์ง๋ง ํ์ดํ์ด ์๋ ํ์ด์ฌ์ผ๋ก ๋๊ท๋ชจ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ๋๋ ์ฝ๋ ๋ณต์ก๋๊ฐ ์ฌ๋ผ๊ฐ๋ฉด์ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๊ณ ํ์
์ด ํ๋ค์ด์ง๋๋ค. ์ด๋ฅผ ์ํด ํ์ด์ฌ์์๋ Type Hint๋ฅผ ์ ๊ณตํ๊ธฐ ์์ํ์ต๋๋ค. ์ด๋ฏธ ๋ ์ค๋ฅด๊ณ ์๋ ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ์ธ FastAPI ๋ํ Type Hint๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๋๋ก ๊ถ์ฅํ๊ณ ์์ต๋๋ค. Type Hint๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ด
๋๋ค. ๋ํ mypy์ pyright ํจํค์ง๋ฅผ ํตํด ํ์
ํํ
์ ๋์ด ์ค์ ์ฝ๋ ์คํ ์ ํ์
์ ๊ฒ์ฌํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆฝ๋๋ค.
๋ท. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ์ฌ ๋ฅ๋ฌ๋ ์ฝ๋ ๋ฆฌํฉํ ๋ง, Django ์ฝ๋ ๋ถ์
์ง์ ๊ณต์ ์ ๊ทธ์น์ง ์๊ณ ๋ฐฐ์ด ๊ฒ๋ค์ด ์ค์ ๋ก ์ด๋ป๊ฒ ์ ์ฉ๋๋ ์ง๋ฅผ ์๋ ค๋๋ฆฝ๋๋ค. ๋จผ์ ๋ฐฐ์ด ๊ฒ์ ํ ๋๋ก ๊ฐ์ฅ ๊ธฐ์ด๊ฐ ๋๋ ์๋ฃ๊ตฌ์กฐ์ธ Linked List ๊ธฐ๋ฐ์ Stack์ ์ง์ ๊ฐ๋ฐํด๋ด
๋๋ค. ๊ทธ๋ผ๊ณ ์ค์ ํ์ ๊ณ์์ ์ฌ์ฉ๋๋ ๋ฅ๋ฌ๋ ์ฝ๋์ ์น ๊ฐ๋ฐ์์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ์ด๋ป๊ฒ ์ ์ฉ๋๋ ์ง๋ฅผ ์๋ ค๋๋ฆฝ๋๋ค.
์ ๊ฐ์๋ง์ ํน๋ณํ ์ !
- class ๋ฌธ๋ฒ๋ง ์๋ ค๋๋ฆฌ์ง ์์ต๋๋ค.
class์ ๋ํ ๋ฌธ๋ฒ์ ์๋ ค์ฃผ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํด์ผ ํ๋์ง, ์ด๋ป๊ฒ ํด์ผ ํ๋์ง๋ฅผ ๋ค์ํ ์ฌ๋ก๋ฅผ ๋ค์ด์ ์ค๋ช
ํฉ๋๋ค. ์ค์ ๋ก ๊ฐ์์์ class๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผ๋ง ํ๋ ์์ ๋ฅผ ๊ฐ์ง๊ณ ๋ฌธ๋ฒ์ ์ค๋ช
ํ๋ฉฐ, ๋ฐฐ์ด ๊ฒ์ ํ์ฉํ๊ธฐ ์ํด ๊ธฐ์ด ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ์ฒด์งํฅ ์์น์ ๋ฐ๋ผ ๊ฐ๋ฐํด ๋ณด๊ณ ์ค์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณด์ฌ๋๋ฆด ์์ ์
๋๋ค.
- C++, Java ์ฌ์ฉ์๋ค๋ ์ฝ๊ฒ ๋ค์ ์ ์๋ ๊ฐ์์
๋๋ค.
๊ธฐ์กด์ ๋ค๋ฅธ ์ธ์ด(C++, Java ๋ฑ)๋ก ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ์ ๋ถ๋ค์ด python์์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฌธ๋ฒ์ ์ตํ ๋ ๋นํฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด์ ๋ C++, Java์ ๋นํด ํ์ด์ฌ์์๋ ๊ฐ๋ฐ์ ๊ฐ์ ์๋ฌต์ ์ฝ์์ผ๋ก ์์ฑํ๋ ๋ฌธ๋ฒ์ด ๋ง๊ธฐ ๋๋ฌธ์
๋๋ค. ํ์ด์ฌ ๋ํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด์ง๋ง C++, Java์ ๋ค๋ฅด๊ฒ ํ์ด์ฌ๋ง์ ํน์ง์ด ์์ต๋๋ค. ์ด ํน์ง์ ์ค๋ช
ํด๋๋ฆฌ๊ณ ๊ธฐ์กด์ ์ธ์ด์ ์ฐจ์ด์ ์ ์ค๋ช
ํด๋๋ฆฝ๋๋ค. ์ด๋ก์จ C++, Java๋ก ๋ฐฐ์ฐ์ ๋ถ๋ค์ด Python์ผ๋ก ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ๊ฐ์ด๋๊ฐ ๋๋ ๊ฐ์ข์
๋๋ค.
- ๋ค์ํ Type์ ์ฝ๋ ์์ฑ๋ฒ์ ๊ณต๊ฐํฉ๋๋ค.
ํ์ด์ฌ์ ๋์ ํ์
์ธ์ด์
๋๋ค. ๋๋ถ์ ๋น ๋ฅธ ๊ฐ๋ฐ ์๋์ ๋์ ์์ฐ์ฑ์ ์๋ํ์ง๋ง, ํ์ดํ์ ํ์ง ์์ ๊ฒฝ์ฐ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๊ณ ๋ฒ๊ทธ๊ฐ ์๊ฒผ์ ๋ ๋๋ฒ๊น
ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ๊ณต์์ ์ผ๋ก ํ์ด์ฌ์์๋ ํ์
ํํธ๋ฅผ ๋์
ํ์์ต๋๋ค. ๊ธฐ์กด์ ๋ง์ ๊ฐ์ข์์๋ ํ์
ํํธ์ ๋ํ์ฌ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ(int, float, str ๋ฑ)์์๋ง ์ธ๊ธํ๊ณ ๋์ด๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํ์ง๋ง ์ด๊ฒ์ผ๋ก๋ ๊ฒฌ๊ณ ํ๊ฒ ํ์ดํ์ ํ๋ ๊ฒ์ด ์ด๋ ต์ต๋๋ค. ์ด ๊ฐ์ข์์๋ ๊ธฐ๋ณธ ์๋ฃํ ๋ฟ๋ง ์๋๋ผ Union Type, Optianal Type, Generic Type ๋ฑ ๋ค์ํ ํ์
์ ์๋ ค๋๋ฆฝ๋๋ค. ์ด๋ก์จ ํ์ด์ฌ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๋ ์์ ํ๊ณ ๊ฒฌ๊ณ ํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ๋ํ ๋จ์ํ ํ์
ํํธ์ ๊ทธ์น์ง ์๊ณ Type์ ์ฒดํฌํ๋ ๋ฐฉ๋ฒ๊น์ง ์๋ ค๋๋ฆด ์์ ์
๋๋ค.