ÆÄÀ̽ãÀÌ Á¦°øÇÏ´Â ´Ù¾çÇÑ °´Ã¼ÁöÇâ µðÀÚÀÎ ÆÐÅÏÀ» È°¿ëÇØ °·ÂÇÑ ÆÄÀ̽ã ÇÁ·Î±×·¥À» °³¹ßÇÒ ¼ö ÀÖµµ·Ï µ½´Â´Ù. ¿©·¯ µðÀÚÀÎ ´ë¾ÈÀ» ¼Ò°³ÇÏ°í °¢ ´ë¾ÈÀÇ ¼º´ÉÀ» ºñ±³Çغ¸¸ç ÇöÀç ÇØ°áÇÏ·Á´Â ¹®Á¦¿¡ ÀûÇÕÇÑ µðÀÚÀÎÀ» °í¸£´Â ¹ýÀ» ¾Ë·ÁÁØ´Ù. ½ºÆä¼È ¸Þ¼µå¸¦ ÅëÇÑ ÆÄÀ̽㠳»Àå Ŭ·¡½º È°¿ë, °´Ã¼ Áö¼Ó¼º, °´Ã¼ÁöÇâ Å×½ºÆ®¿Í µð¹ö±ë °°Àº °í±Þ ÆÄÀ̽ã ÁÖÁ¦¸¦ dzºÎÇÏ°í ÀÏ°üµÈ ¿¹Á¦·Î ¼³¸íÇÑ´Ù.
ÄÄÇ»ÅÍ°¡ °Å´ëÇÏ°í °ªºñ½Î°í ±ÍÇß´ø 1970³â´ë¿¡ ÇÁ·Î±×·¡¹ÖÀ» ½ÃÀÛÇß´Ù. °è¾àÁ÷ ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚÀÌÀÚ ¼³°èÀڷμ Å©°í ÀÛÀº ¼ö¹é¿© °ÇÀÇ ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇØ¿Ô´Ù. 10³â ³Ñ°Ô ÆÄÀ̽ãÀ» »ç¿ëÇØ ºñÁî´Ï½º ¹®Á¦¸¦ ÇØ°á ÁßÀÌ´Ù. ÆÑÆ®ÃâÆǻ翡¼ ¡ºÀ¯ÄèÇÑ ÆÄÀ̽㡻(¿¡ÀÌÄÜ, 2015), ¡ºPython for Secret Agents II¡»(2015), ¡ºPython Essentials¡»(2015), ¡ºFunctional Python Programming, 3/e¡»(2022), ¡º°´Ã¼ÁöÇâ ÆÄÀ̽ã ÇÁ·Î±×·¡¹Ö¡»(¿¡ÀÌÄÜ, 2017) µîÀ» Ãâ°£Çß´Ù. ÇöÀç ¹Ì±¹ µ¿ºÎ ÇؾÈÀ» µ¹¾Æ´Ù´Ï¸ç ¾÷°è¿¡ ¸Ó¹°°í ÀÖ´Ù.
1Àå. Áغñ, µµ±¸, ±â¹ý
__±â¼ú ¿ä±¸ »çÇ×
__ºí·¢Àè °ÔÀÓ ¼Ò°³
____°ÔÀÓ ½ÃÀÛ
____ºí·¢Àè Ç÷¹À̾î Àü·«
____ºí·¢Àè ½Ã¹Ä·¹À̼ÇÀ» À§ÇÑ °´Ã¼ µðÀÚÀÎ
__ÆÄÀ̽㠷±Å¸ÀÓ°ú ½ºÆä¼È ¸Þ¼µå
__ÀÎÅÍ·¢¼Ç, ½ºÅ©¸³ÆÃ, µµ±¸
__IDE °í¸£±â
__ÀÏ°ü¼º°ú ½ºÅ¸ÀÏ
__ŸÀÔ ÈùÆ®¿Í mypy ÇÁ·Î±×·¥
__¼º´É - timeit ¸ðµâ
__Å×½ºÆ® - unittest¿Í doctest
__¹®¼È - sphinx¿Í RST ¸¶Å©¾÷
__ÄÄÆ÷³ÍÆ® ¼³Ä¡
__¿ä¾à
2Àå. __init__() ¸Þ¼µå
__±â¼ú ¿ä±¸ »çÇ×
__¾Ï¹¬Àû ÃÖ»óÀ§ Ŭ·¡½º - object
__±â¹Ý Ŭ·¡½º °´Ã¼ÀÇ __init__() ¸Þ¼µå
__ÃÖ»óÀ§ Ŭ·¡½ºÀÇ __init__() ±¸Çö
__¿°ÅÇü »ó¼ö »ý¼º
__ÆÑÅ丮ÇÔ¼ö·Î __init__() È°¿ë
____°áÇÔÀÌ ÀÖ´Â ÆÑÅ丮 µðÀÚÀΰú ¸ðÈ£ÇÑ elseÀý
____elif ½ÃÄö½º¸¦ ÀÌ¿ëÇÑ ´Ü¼øÈ¿Í ÀÏ°ü¼º
____¸ÅÇΰú Ŭ·¡½º °´Ã¼¸¦ ÀÌ¿ëÇÑ ´Ü¼øÈ
____µÎ º´·Ä ¸ÅÇÎ
____Æ©Çà °ª¿¡ ¸ÅÇÎ
____ºÎºÐÇÔ¼ö ¹æ½Ä
____ÆÑÅ丮¿ë Ç÷ç¾ðÆ® API
__°¢ ÇÏÀ§ Ŭ·¡½º¿¡¼ __init__() ±¸Çö
__º¹ÇÕ °´Ã¼
____Ä÷º¼Ç Ŭ·¡½º ·¡ÇÎ
____Ä÷º¼Ç Ŭ·¡½º È®Àå
____Ãß°¡ÀûÀÎ ¿ä±¸ »çÇ×°ú µðÀÚÀÎ ´ë¾È
__º¹ÀâÇÑ º¹ÇÕ °´Ã¼
____º¹ÇÕ °´Ã¼ ÃʱâÈ
____init__()ÀÌ ÇÊ¿ä ¾ø´Â »óÅ°¡ ¾ø´Â(stateless) °´Ã¼
__Ãß°¡ Ŭ·¡½º Á¤ÀÇ
__´ÙÁß Àü·« __init__()
____º¸´Ù º¹ÀâÇÑ ÃʱâÈ
____Á¤Àû ȤÀº Ŭ·¡½º´Ü ¸Þ¼µå ÃʱâÈ
__±âŸ __init__() ±â¹ý
____ŸÀÔ °Ë»ç¸¦ Æ÷ÇÔÇÏ´Â ÃʱâÈ
____ÃʱâÈ, ĸ½¶È, ÇÁ¶óÀ̹ö½Ã
__¿ä¾à
3Àå. ¸Å²ô·¯¿î ÅëÇÕ: ±âÃÊ ½ºÆä¼È ¸Þ¼µå
__±â¼ú ¿ä±¸ »çÇ×
____repr__()°ú __str__() ¸Þ¼µå
____´Ü¼ø __str__()°ú __repr__()
____Ä÷º¼Ç __str__()°ú __repr__()
____format__() ¸Þ¼µå
____Áßø Æ÷¸Ë ¸í¼¼
____Ä÷º¼Ç°ú Æ÷¸Ë ¸í¼¼ À§ÀÓ
____hash__() ¸Þ¼µå
____Çؽà ¼±ÅÃ
____ºÒº¯ °´Ã¼ Á¤ÀÇ »ó¼Ó
____ºÒº¯ °´Ã¼ Á¤ÀÇ ¿À¹ö¶óÀ̵ù
____°¡º¯ °´Ã¼ Á¤ÀÇ ¿À¹ö¶óÀ̵ù
____°¡º¯ ÇÚµå·ÎºÎÅÍ ÇÁ·ÎÁð ÇÚµå »ý¼º
____bool__() ¸Þ¼µå
____bytes__() ¸Þ¼µå
__ºñ±³ ¿¬»êÀÚ ¸Þ¼µå
____ºñ±³ µðÀÚÀÎ
____°°Àº Ŭ·¡½ºÀÇ °´Ã¼ ºñ±³ ±¸Çö
____¼·Î ´Ù¸¥ Ŭ·¡½ºÀÇ °´Ã¼ ºñ±³ ±¸Çö
____Çϵå Á¡¼ö¿Í ¼ÒÇÁÆ® Á¡¼ö ±×¸®°í ´ÙÇü¼º
____¼·Î ´Ù¸¥ Ŭ·¡½º ºñ±³ ¿¹Á¦
____del__() ¸Þ¼µå
____ÂüÁ¶ °è¼ö¿Í ¼Ò¸ê
____¼øȯ ÂüÁ¶¿Í °¡ºñÁö Ä÷º¼Ç
____¼øȯ ÂüÁ¶¿Í weakref ¸ðµâ
______del__()°ú close() ¸Þ¼µå
____new__() ¸Þ¼µå¿Í ºÒº¯ °´Ã¼
____new__() ¸Þ¼µå¿Í ¸ÞŸŬ·¡½º
____¸ÞŸŬ·¡½º ¿¹Á¦: Ŭ·¡½º´Ü ·Î°Å
__¿ä¾à
4Àå. ¼Ó¼º Á¢±Ù°ú ÇÁ·ÎÆÛƼ, µð½ºÅ©¸³ÅÍ
__±â¼ú ¿ä±¸ »çÇ×
__±âº» ¼Ó¼º ó¸®
____¼Ó¼º°ú __init__() ¸Þ¼µå
__ÇÁ·ÎÆÛƼ »ý¼º
____Áï½Ã °è»ê ÇÁ·ÎÆÛƼ
____setter¿Í deleter ÇÁ·ÎÆÛƼ
__½ºÆä¼È ¸Þ¼µå·Î ¼Ó¼º Á¢±Ù
______slots__À¸·Î ¼Ó¼º¸í Á¦ÇÑ
______getattr__()·Î µ¿Àû ¼Ó¼º »ý¼º
____NamedTupleÀÇ ÇÏÀ§ Ŭ·¡½º·Î¼ ºÒº¯ °´Ã¼ »ý¼º
____Áï½Ã °è»êµÇ´Â ¼Ó¼º°ú dataclasses, __post_init__()
______setattr__()·Î ÁõºÐ °è»ê
____getattribute__() ¸Þ¼µå
__µð½ºÅ©¸³ÅÍ »ý¼º
____ºñµ¥ÀÌÅÍ µð½ºÅ©¸³ÅÍ »ç¿ëÇϱâ
____µ¥ÀÌÅÍ µð½ºÅ©¸³ÅÍ »ç¿ëÇϱâ
__¼Ó¼º°ú ÇÁ·ÎÆÛƼ¿¡ ŸÀÔ ÈùÆ® »ç¿ë
__dataclasses ¸ðµâ »ç¿ëÇϱâ
__¼Ó¼º µðÀÚÀÎ ÆÐÅÏ
____ÇÁ·ÎÆÛƼ ´ë ¼Ó¼º
____µð½ºÅ©¸³ÅÍ·Î µðÀÚÀÎ
__¿ä¾à
5Àå. ÀÏ°üµÈ µðÀÚÀÎÀÇ Ãß»ó ±â¹Ý Ŭ·¡½º
__±â¼ú ¿ä±¸ »çÇ×
__Ãß»ó ±â¹Ý Ŭ·¡½º
__±â¹Ý Ŭ·¡½º¿Í ´ÙÇü¼º
__ÄÝ·¯ºí
__ÄÁÅ×ÀÌ³Ê¿Í Ä÷º¼Ç
__¼ö
__±× ¹ÛÀÇ Ãß»óÈ
____¹Ýº¹ÀÚ Ãß»óÈ
____ÄÁÅؽºÆ®¿Í ÄÁÅؽºÆ® ¸Å´ÏÀú
__abc¿Í typing ¸ðµâ
______subclasshook__() ¸Þ¼µå »ç¿ëÇϱâ
____ŸÀÔ ÈùÆ®¸¦ »ç¿ëÇÏ´Â Ãß»ó Ŭ·¡½º
__¿ä¾à, µðÀÚÀÎ °í·Á »çÇ×, Æ®·¹À̵å¿ÀÇÁ
____¿¹°í
6Àå. ÄÝ·¯ºí°ú ÄÁÅؽºÆ®
__±â¼ú ¿ä±¸ »çÇ×
__ÄÝ·¯ºí µðÀÚÀÎ
__¼º´É °³¼±
____¸Þ¸ðÀÌÁ¦À̼ÇÀ̳ª ij½Ì »ç¿ë
__functools¸¦ »ç¿ëÇÑ ¸Þ¸ðÀÌÁ¦À̼Ç
____ÄÝ·¯ºí ÀÎÅÍÆäÀ̽º·Î ´Ü¼ø¼º Ãß±¸
__º¹Àâµµ¿Í ÄÝ·¯ºí ÀÎÅÍÆäÀ̽º
__ÄÁÅؽºÆ® °ü¸®¿Í with¹®
____½ÊÁø ÄÁÅؽºÆ® »ç¿ë
____±× ¹Û¿¡ ÄÁÅؽºÆ®
____enter__()¿Í __exit__() ¸Þ¼µå Á¤ÀÇ
____¿¹¿Ü ó¸®
__ÆÑÅ丮·Î¼ÀÇ ÄÁÅؽºÆ® ¸Å´ÏÀú
____ÄÁÅؽºÆ® ¸Å´ÏÀú »èÁ¦
__¿ä¾à
____ÄÝ·¯ºíÀÇ µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____ÄÁÅؽºÆ® ¸Å´ÏÀúÀÇ µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____¿¹°í
7Àå. ÄÁÅ×ÀÌ³Ê¿Í Ä÷º¼Ç »ý¼º
__±â¼ú ¿ä±¸ »çÇ×
__Ä÷º¼ÇÀÇ Ãß»ó ±â¹Ý Ŭ·¡½º
__½ºÆä¼È ¸Þ¼µå ¿¹Á¦
__Ç¥ÁØ ¶óÀ̺귯¸® È®Àå »ç¿ë
____typing.NamedTuple Ŭ·¡½º
____deque Ŭ·¡½º
____ChainMap À¯½º ÄÉÀ̽º
____OrderedDict Ä÷º¼Ç
____defaultdict ÇÏÀ§ Ŭ·¡½º
____counter Ä÷º¼Ç
__»õ·Î¿î Á¾·ùÀÇ Ä÷º¼Ç »ý¼ºÇϱâ
__Ä÷º¼Ç ŸÀÔ Á¼È÷±â
__»õ·Î¿î Á¾·ùÀÇ ½ÃÄö½º Á¤ÀÇÇϱâ
____Åë°è ¸®½ºÆ®
____Áï½Ã °è»ê°ú Áö¿¬ °è»ê ¼±ÅÃ
______getitem__(), __setitem__(), __delitem__(), ½½¶óÀ̽º ´Ù·ç±â
______getitem__(), __setitem__(), __delitem__() ±¸Çö
____¸®½ºÆ® ·¡Çΰú À§ÀÓ
______iter__()·Î ¹Ýº¹ÀÚ »ý¼º
__»õ·Î¿î Á¾·ùÀÇ ¸ÅÇÎ »ý¼ºÇϱâ
__»õ·Î¿î Á¾·ùÀÇ ÁýÇÕ »ý¼ºÇϱâ
____µðÀÚÀÎ ¿ø¸®
____Tree Ŭ·¡½º Á¤ÀÇ
____TreeNode Ŭ·¡½º Á¤ÀÇ
____ÀÌÁø Æ®¸® ¹é ½ÇÇè
__µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
__¿ä¾à
8Àå. ¼ö »ý¼º
__±â¼ú ¿ä±¸ »çÇ×
__¼öÀÇ Ãß»ó ±â¹Ý Ŭ·¡½º
____»ç¿ëÇÒ Å¸ÀÔ °áÁ¤
____¸Þ¼µå °áÁ¤°ú ¹Ý»ç ¿¬»êÀÚ
__»ê¼ú ¿¬»êÀÚÀÇ ½ºÆä¼È ¸Þ¼µå
__¼ö Ŭ·¡½º »ý¼º
____FixedPoint ÃʱâÈ Á¤ÀÇ
____FixedPoint ÀÌÇ× »ê¼ú ¿¬»êÀÚ Á¤ÀÇ
____FixedPoint ´ÜÇ× »ê¼ú ¿¬»êÀÚ Á¤ÀÇ
____FixedPoint ¹Ý»ç ¿¬»êÀÚ ±¸Çö
____FixedPoint ºñ±³ ¿¬»êÀÚ ±¸Çö
__¼ö Çؽà °è»ê
____´õ À¯¿ëÇÑ ¹Ý¿Ã¸² µðÀÚÀÎ
__´Ù¸¥ ½ºÆä¼È ¸Þ¼µå ±¸Çö
__Á¦ÀÚ¸® ¿¬»êÀÚ·Î ÃÖÀûÈ
__¿ä¾à
9Àå. Àå½ÄÀÚ¿Í ¹Í½ºÀÎ: Ⱦ´Ü °ü½É»ç
__±â¼ú ¿ä±¸ »çÇ×
__Ŭ·¡½º¿Í ±× ÀǹÌ
____Àå½ÄÀÚÀÇ Å¸ÀÔ ÈùÆ®¿Í ¼Ó¼º
____ÇÔ¼öÀÇ ¼Ó¼º
____Àå½ÄµÈ Ŭ·¡½º ±¸¼º
____Ŭ·¡½º µðÀÚÀÎ ¿øÄ¢
____°üÁ¡ ÁöÇâ ÇÁ·Î±×·¡¹Ö
__³»Àå Àå½ÄÀÚ »ç¿ë
____Ç¥ÁØ ¶óÀ̺귯¸® Àå½ÄÀÚ »ç¿ë
__Ç¥ÁØ ¶óÀ̺귯¸® ¹Í½ºÀΠŬ·¡½º »ç¿ë
____¹Í½ºÀΠŬ·¡½º·Î enum »ç¿ë
__°£´ÜÇÑ ÇÔ¼ö Àå½ÄÀÚ ÀÛ¼º
____º°µµ ·Î°Å »ý¼º
__Àå½ÄÀÚ ¸Å°³º¯¼öÈ
__¸Þ¼µåÇÔ¼ö Àå½ÄÀÚ »ý¼º
__Ŭ·¡½º Àå½ÄÀÚ »ý¼º
__Ŭ·¡½º¿¡ ¸Þ¼µå Ãß°¡
__Àå½ÄÀÚ¸¦ »ç¿ëÇÑ º¸¾È
__¿ä¾à
10Àå. Á÷·ÄÈ¿Í ÀúÀå: JSON, YAML, Pickle, CSV, XML
__±â¼ú ¿ä±¸ »çÇ×
__Áö¼Ó¼º°ú Ŭ·¡½º, »óÅÂ, Ç¥Çö ÀÌÇØÇϱâ
____ÀϹÝÀûÀÎ ÆÄÀ̽㠿ë¾î
__ÆÄÀϽýºÅÛ°ú ³×Æ®¿öÅ© °í·Á »çÇ×
__Áö¼Ó¼ºÀ» Áö¿øÇϴ Ŭ·¡½º Á¤ÀÇ
____ºí·Î±×¿Í Æ÷½ºÆ® ·»´õ¸µ
__JSON ´ýÇÁ¿Í ·Îµå
____JSON ŸÀÔ ÈùÆ®
____¿¹Á¦ Ŭ·¡½º¿¡¼ JSON Áö¿ø
____JSON ÀÎÄÚµù Ä¿½ºÅ͸¶ÀÌ¡
____JSON µðÄÚµù Ä¿½ºÅ͸¶ÀÌ¡
____º¸¾È°ú eval() À̽´
____ÀÎÄÚµù ÇÔ¼ö ¸®ÆÑÅ͸µ
____³¯Â¥ ¹®ÀÚ¿ Ç¥ÁØÈ
____JSONÀ» ÆÄÀÏ¿¡ ¾²±â
__YAML ´ýÇÁ¿Í ·Îµå
____YAML µ¥ÀÌÅÍ ÆÄÀÏ¿¡ Æ÷¸ÅÆÃÇϱâ
____YAML Ç¥Çö È®Àå
____º¸¾È°ú ¾ÈÀüÇÑ ·Îµå
__pickle ´ýÇÁ¿Í ·Îµå
____¾ÈÁ¤ÀûÀÎ ÇÇŬ 󸮸¦ À§ÇÑ Å¬·¡½º µðÀÚÀÎ
____º¸¾È°ú Àü¿ª À̽´
__CSV·Î ´ýÇÁ¿Í ·Îµå
____°£´ÜÇÑ ½ÃÄö½º¸¦ CSV·Î ´ýÇÁ
____CSV·ÎºÎÅÍ °£´ÜÇÑ ½ÃÄö½º ·Îµå
____ÄÁÅ×ÀÌ³Ê¿Í º¹ÀâÇÑ Å¬·¡½º ó¸®
____CSV ÆÄÀÏ¿¡ ´Ù¾çÇÑ Çà ŸÀÔ ´ýÇÁ¿Í ·Îµå
____¹Ýº¹ÀÚ·Î CSV Çà ÇÊÅ͸µ
____CSV ÆÄÀÏ¿¡ Á¶ÀÎ Çà ´ýÇÁ¿Í ·Îµå
__XML ´ýÇÁ¿Í ·Îµå
____¹®ÀÚ¿ ÅÛÇø´À» »ç¿ëÇÑ °´Ã¼ ´ýÇÁ
____xml.etree.ElementTree·Î °´Ã¼ ´ýÇÁ
____XML ¹®¼ ·Îµå
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____½ºÅ°¸¶ ÁøÈ
____¿¹°í
11Àå. ¼Ðºê¸¦ ÅëÇÑ °´Ã¼ ÀúÀå°ú ÃßÃâ
__±â¼ú ¿ä±¸ »çÇ×
__°´Ã¼ Áö¼Ó À¯½º ÄÉÀ̽º ºÐ¼®
____ACID ¼Ó¼º
__¼Ðºê »ý¼º
__¼Ðºê·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Â °´Ã¼ µðÀÚÀÎ
____ŸÀÔ ÈùÆ®¸¦ °®´Â °´Ã¼ µðÀÚÀÎ
____°´Ã¼ÀÇ Å° µðÀÚÀÎ
____°´Ã¼ÀÇ ´ë¸® Å° »ý¼º
____´Ü¼ø Å°·Î Ŭ·¡½º µðÀÚÀÎ
____ÄÁÅ×À̳ʳª Ä÷º¼ÇÀÇ Å¬·¡½º µðÀÚÀÎ
____¿Ü·¡ Å°·Î °´Ã¼ ÂüÁ¶
____º¹ÀâÇÑ °´Ã¼ÀÇ CRUD ¿¬»ê µðÀÚÀÎ
__°Ë»ö, ½ºÄµ, Äõ¸®
__¼ÐºêÀÇ Á¢±Ù °èÃþ µðÀÚÀÎ
____µ¥¸ð ½ºÅ©¸³Æ® ÀÛ¼º
__È¿À²¼ºÀ» ³ôÀÌ´Â »öÀÎ »ý¼º
____ij½Ã »ý¼º
__»öÀÎ À¯Áö º¸¼ö ±â´É Ãß°¡
__¶óÀÌÆ®¹éÀ¸·Î »öÀÎ ¾÷µ¥ÀÌÆ®
____½ºÅ°¸¶ ÁøÈ
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____¾ÖÇø®ÄÉÀÌ¼Ç ¼ÒÇÁÆ®¿þ¾î °èÃþ
____¿¹°í
12Àå. SQLite¸¦ ÅëÇÑ °´Ã¼ ÀúÀå°ú ÃßÃâ
__±â¼ú ¿ä±¸ »çÇ×
__SQL µ¥ÀÌÅͺ£À̽º, Áö¼Ó¼º, °´Ã¼
____SQL µ¥ÀÌÅÍ ¸ðµ¨: Çà°ú Å×À̺í
____SQL DML¹®À» ÅëÇÑ CRUD ó¸®
____SQL SELECT¹®À¸·Î Çà Äõ¸®
____SQL Æ®·£Àè¼Ç°ú ACID ¼Ó¼º
____µ¥ÀÌÅͺ£À̽ºÀÇ ±âº» Å°¿Í ¿Ü·¡ Å° µðÀÚÀÎ
__SQL·Î ¾ÖÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ Ã³¸®
____¼ø¼ö SQL·Î Ŭ·¡½º¿Í À¯»çÇÑ Ã³¸® ±¸Çö
__ÆÄÀ̽㠰´Ã¼¿Í SQLite BLOB ¿ ¸ÅÇÎ
__ÆÄÀ̽㠰´Ã¼¿Í µ¥ÀÌÅͺ£À̽º Çà ¼öµ¿ ¸ÅÇÎ
____SQLite Á¢±Ù °èÃþ µðÀÚÀÎ
____ÄÁÅ×ÀÌ³Ê °ü°è ±¸Çö
__»öÀÎÀ¸·Î ¼º´É Çâ»ó
__ORM °èÃþ Ãß°¡
____ORMÀ» »ç¿ëÇÑ Å¬·¡½º µðÀÚÀÎ
____ORM °èÃþÀ¸·Î ½ºÅ°¸¶ »ý¼º
____ORM °èÃþ¿¡¼ °´Ã¼ Á¶ÀÛ
__ű׷ΠÆ÷½ºÆ® Äõ¸®
__ORM °èÃþ¿¡ »öÀÎ Á¤ÀÇ
____½ºÅ°¸¶ ÁøÈ
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____¸ÅÇÎ ´ë¾È
____Å°¿Í Å° µðÀÚÀÎ
____¾ÖÇø®ÄÉÀÌ¼Ç ¼ÒÇÁÆ®¿þ¾î °èÃþ
____¿¹°í
13Àå. °´Ã¼ Àü¼Û°ú °øÀ¯
__±â¼ú ¿ä±¸ »çÇ×
__Ŭ·¡½º, »óÅÂ, Ç¥Çö
__HTTP¿Í REST·Î °´Ã¼ Àü¼Û
____REST¸¦ ÅëÇÑ CRUD ¿¬»ê ±¸Çö
____CRUD ÀÌ¿ÜÀÇ ¿¬»ê ±¸Çö
____REST ÇÁ·ÎÅäÄÝ°ú ACID
____JSON, XML, YAML Áß Ç¥Çö ¼±ÅÃ
__Flask·Î RESTful À¥ ¼ºñ½º »ý¼º
____Àü¼ÛÇÒ ¹®Á¦ µµ¸ÞÀÎ °´Ã¼
____°£´ÜÇÑ ¾ÖÇø®ÄÉÀ̼ǰú ¼¹ö »ý¼º
____´õ¿í Á¤±³ÇÑ ¶ó¿ìÆðú ÀÀ´ä
____REST Ŭ¶óÀ̾ðÆ® ±¸Çö
____RESTful ¼ºñ½º µ¥¸ð¿Í ´ÜÀ§ Å×½ºÆ®
__½ºÅ×ÀÌƮǮ REST ¼ºñ½º ´Ù·ç±â
____RESTful °´Ã¼ ½Äº°ÀÚ µðÀÚÀÎ
____´ÙÁß °èÃþ REST ¼ºñ½º
____Çöó½ºÅ© ºí·çÇÁ¸°Æ® »ç¿ëÇϱâ
____ºí·çÇÁ¸°Æ® µî·Ï
__¾ÈÀüÇÑ RESTful ¼ºñ½º ¸¸µé±â
____»ç¿ëÀÚ ºñ¹Ð¹øÈ£ ÇؽÌ
__À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©·Î REST ±¸Çö
__¸Þ½ÃÁö Å¥·Î °´Ã¼ Àü¼Û
____ÇÁ·Î¼¼½º Á¤ÀÇ
____Å¥ »ý¼º°ú µ¥ÀÌÅÍ Á¦°ø
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____½ºÅ°¸¶ ÁøÈ
____¾ÖÇø®ÄÉÀÌ¼Ç ¼ÒÇÁÆ®¿þ¾î °èÃþ
____¿¹°í
14Àå ¼³Á¤ ÆÄÀÏ°ú Áö¼Ó¼º
__±â¼ú ¿ä±¸ »çÇ×
__¼³Á¤ ÆÄÀÏ À¯½º ÄÉÀ̽º
__Ç¥Çö°ú Áö¼Ó¼º, »óÅÂ, »ç¿ë¼º
____¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤ µðÀÚÀÎ ÆÐÅÏ
____°´Ã¼ »ý¼ºÀ» ÅëÇÑ ¼³Á¤
____¼³Á¤ °èÃþ ±¸Á¶ ±¸Çö
__INI ÆÄÀÏ°ú PY ÆÄÀÏ¿¡ ¼³Á¤ ÀúÀå
__eval() º¯ÇüÀ¸·Î ´õ ¸¹Àº ¸®ÅÍ·² ó¸®
__PY ÆÄÀÏ¿¡ ¼³Á¤ ÀúÀå
____Ŭ·¡½º Á¤ÀǸ¦ ÅëÇÑ ¼³Á¤
____SimpleNamespace¸¦ ÅëÇÑ ¼³Á¤
____ÆÄÀ̽ã exec()¸¦ »ç¿ëÇÑ ¼³Á¤
__exec()À» °ÆÁ¤ÇÏÁö ¾Ê¾Æµµ µÇ´Â ÀÌÀ¯
__±âº»°ª°ú ¿À¹ö¶óÀ̵忡 ChainMap »ç¿ë
__JSONÀ̳ª YAML¿¡ ¼³Á¤ ÀúÀå
____ÁßøÀÌ ¾ø´Â JSON ¼³Á¤ »ç¿ë
____YAML ¼³Á¤ ·Îµù
__ÇÁ·ÎÆÛƼ ÆÄÀÏ¿¡ ¼³Á¤ ÀúÀå
____ÇÁ·ÎÆÛƼ ÆÄÀÏ ÆĽÌ
____ÇÁ·ÎÆÛƼ ÆÄÀÏ »ç¿ë
__PLIST °°Àº XML ÆÄÀÏ »ç¿ë
____¸ÂÃãÇü XML ¼³Á¤ ÆÄÀÏ
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____°øÀ¯ ¼³Á¤ »ý¼º
____½ºÅ°¸¶ ÁøÈ
____¿¹°í
15Àå. µðÀÚÀÎ ¿øÄ¢°ú ÆÐÅÏ
__±â¼ú ¿ä±¸ »çÇ×
__SOLID µðÀÚÀÎ ¿øÄ¢
____ÀÎÅÍÆäÀ̽º ºÐ¸® ¿øÄ¢
____¸®½ºÄÚÇÁ ġȯ ¿øÄ¢
____°³¹æ Æó¼â ¿øÄ¢
____ÀÇÁ¸ °ü°è ¿ªÀü ¿øÄ¢
____´ÜÀÏ Ã¥ÀÓ ¿øÄ¢
__SOLID ¿øÄ¢ µðÀÚÀÎ Å×½ºÆ®
__»ó¼Ó°ú ±¸¼ºÀ¸·Î ±â´É »ý¼º
____°í±Þ ±¸¼º ÆÐÅÏ
__ÆÄÀ̽ã°ú libstdc++ °£ À¯»ç¼º
__¿ä¾à
16Àå. ·Î±ë°ú °æ°í ¸ðµâ
__±â¼ú ¿ä±¸ »çÇ×
__±âº» ·Î±× »ý¼º
____Ŭ·¡½º´Ü ·Î°Å »ý¼º
____·Î°Å ¼³Á¤
____·Î±ë ½Ã½ºÅÛ °¡µ¿°ú ÁßÁö
____·Î°Å ¸í¸í
____·Î°Å ·¹º§ È®Àå
____´Ù¼öÀÇ ¸ñÀûÁö¸¦ Áö¿øÇÏ´Â Çڵ鷯 Á¤ÀÇ
____ÀüÆÄ ±ÔÄ¢ °ü¸®
__¼³Á¤ ÁÖÀÇ »çÇ×
__Á¦¾î¿Í µð¹ö±ë, °¨»ç, º¸¾ÈÀ» À§ÇÑ Æ¯¼ö ·Î±ë
____µð¹ö±ë ·Î±× »ý¼º
____°¨»ç¿Í º¸¾È ·Î±× »ý¼º
__warnings ¸ðµâ »ç¿ë
____°æ°í·Î API º¯°æ ¾Ë¸²
____°æ°í·Î ¼³Á¤ ¹®Á¦ ¾Ë¸²
____°æ°í·Î °¡´ÉÇÑ ¼ÒÇÁÆ®¿þ¾î ¹®Á¦ ¾Ë¸²
__°í±Þ ·Î±ë: ÃÖ±Ù ¸Þ½ÃÁö¿Í ³×Æ®¿öÅ© ¸ñÀûÁö
____ÀÚµ¿ Å×ÀÏ ¹öÆÛ »ý¼º
____¿ø°Ý ÇÁ·Î¼¼½º¿¡ ·Î±ë ¸Þ½ÃÁö Àü¼Û
____Å¥ ¿À¹ö·± ¹æÁö
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____¿¹°í
17Àå. Å×½ºÆ® °¡´ÉÇÑ µðÀÚÀÎ
__±â¼ú ¿ä±¸ »çÇ×
__Å×½ºÆ® ´ÜÀ§ Á¤ÀÇ¿Í ºÐ¸®
____ÀÇÁ¸ °ü°è ÃÖ¼ÒÈ
____°£´ÜÇÑ ´ÜÀ§ Å×½ºÆ® »ý¼º
____Å×½ºÆ® ½ºÀ§Æ® »ý¼º
____¿¡Áö ÄÉÀ̽º¿Í ÄÚ³Ê ÄÉÀ̽º ³Ö±â
____¸ñ °´Ã¼·Î ÀÇÁ¸ °ü°è Á¦°Å
____¸ñ °´Ã¼·Î µ¿ÀÛ °üÂû
__doctest·Î Å×½ºÆ® ÄÉÀ̽º Á¤ÀÇ
____doctest¿Í unittest °áÇÕ
____´õ¿í ¿ÏÀüÇÑ Å×½ºÆ® ÆÐÅ°Áö »ý¼º
__¼³Á¤°ú ÇØÁ¦ »ç¿ë
____OS ÀÚ¿ø¿¡ ¼³Á¤°ú ÇØÁ¦ »ç¿ë
____µ¥ÀÌÅͺ£À̽º¿¡ ¼³Á¤°ú ÇØÁ¦ »ç¿ë
__TestCase Ŭ·¡½º °èÃþ ±¸Á¶
__¿ÜºÎ¿¡¼ Á¤ÀÇÇÑ ¿¹»ó °á°ú »ç¿ë
__pytest¿Í ÇȽºÃ³
____¾î¼¼Ç °Ë»ç
____ÇȽºÃ³·Î Å×½ºÆ® ¼³Á¤
____ÇȽºÃ³·Î ¼³Á¤°ú ÇØÁ¦
____¸Å°³º¯¼öÈÇÑ ÇȽºÃ³ »ý¼º
__ÀÚµ¿ ÅëÇÕ ¶Ç´Â ¼º´É Å×½ºÆ®
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____¿¹°í
18Àå. ¸í·ÉÁ٠ó¸®
__±â¼ú ¿ä±¸ »çÇ×
__OS ÀÎÅÍÆäÀ̽º¿Í ¸í·ÉÁÙ
____ÀÎÀÚ¿Í ¿É¼Ç
__pathlib ¸ðµâ »ç¿ëÇϱâ
__argparse·Î ¸í·ÉÁÙ ÆĽÌ
____´Ü¼ø ¿Â¿ÀÇÁ ¿É¼Ç
____ÀÎÀÚ°¡ ÀÖ´Â ¿É¼Ç
____À§Ä¡ ÀÎÀÚ
____±× ¹Û¿¡ ÀÎÀÚ
____?version Ç¥½Ã¿Í Á¾·á
____?help Ç¥½Ã¿Í Á¾·á
__¸í·ÉÁÙ ¿É¼Ç°ú ȯ°æº¯¼ö ÅëÇÕ
____´õ ¼³Á¤ °¡´ÉÇÑ ±âº»°ª Á¦°ø
____ȯ°æº¯¼ö·Î ¼³Á¤ ÆÄÀÏ °ª ¿À¹ö¶óÀ̵ù
____¼³Á¤¿¡ None °ª È°¿ë
__µµ¿ò¸» Ãâ·Â ¸ÂÃãÈ
__ÃÖ»óÀ§ main() ÇÔ¼ö »ý¼º
____¼³Á¤ÀÇ DRY ¿øÄ¢
____Áßø ¼³Á¤ ÄÁÅؽºÆ® °ü¸®
__ÀüüÀû ÇÁ·Î±×·¡¹Ö
____¸í·É Ŭ·¡½º µðÀÚÀÎ
____ºÐ¼® ¸í·É ÇÏÀ§ Ŭ·¡½º Ãß°¡
____¾ÖÇø®ÄÉÀ̼ǿ¡ ±â´É Ãß°¡¿Í ÆÐŰ¡
____Á» ´õ »óÀ§ÀÇ º¹ÇÕ ¸í·É µðÀÚÀÎ
__¶Ç ´Ù¸¥ º¹ÇÕ ¸í·É µðÀÚÀÎ ÆÐÅÏ
__´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ǰúÀÇ ÅëÇÕ
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____¿¹°í
19Àå. ¸ðµâ°ú ÆÐÅ°Áö µðÀÚÀÎ
__±â¼ú ¿ä±¸ »çÇ×
__¸ðµâ µðÀÚÀÎ
____¸ðµâ µðÀÚÀÎ ÆÐÅÏ
____¸ðµâ°ú Ŭ·¡½º ºñ±³
____¸ðµâ ¼Ó µé¿©´Ùº¸±â
__ÀüüÀû ¸ðµâ ´ë ¸ðµâ Ç׸ñ
__ÆÐÅ°Áö µðÀÚÀÎ
____¸ðµâ-ÆÐÅ°Áö ÇÏÀ̺긮µå µðÀÚÀÎ
____¿©·¯ ´ë¾È ±¸ÇöÀ» Æ÷ÇÔÇÏ´Â ÆÐÅ°Áö µðÀÚÀÎ
____ImportError ¿¹¿Ü »ç¿ëÇϱâ
__¸ÞÀÎ ½ºÅ©¸³Æ®¿Í __main__ ¸ðµâ µðÀÚÀÎ
____½ÇÇà °¡´ÉÇÑ ½ºÅ©¸³Æ® ÆÄÀÏ »ý¼º
______main__ ¸ðµâ »ý¼º
____ÀüüÀû ÇÁ·Î±×·¡¹Ö
__Àå±â ½ÇÇà ¾ÖÇø®ÄÉÀÌ¼Ç µðÀÚÀÎ
__src¿Í scripts, tests, docs·Î ÄÚµå Á¶Á÷
__ÆÄÀ̽㠸ðµâ ¼³Ä¡
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ
____¿¹°í
20Àå. Ç°Áú°ú ¼³¸í¼
__±â¼ú ¿ä±¸ »çÇ×
__help() ÇÔ¼ö¿¡ ¾²ÀÏ ¹®¼È ¹®ÀÚ¿ ÀÛ¼º
__ÆÄÀ̵¶À» »ç¿ëÇÑ ¼³¸í¼
__RST ¸¶Å©¾÷À» ÅëÇÑ Ãâ·Â °³¼±
____ÅؽºÆ® ºí·Ï
____RST ÀζóÀÎ ¸¶Å©¾÷
____RST µð·ºÆ¼ºê
____RST ÀÍÈ÷±â
__È¿°úÀûÀÎ ¹®¼È ¹®ÀÚ¿ ÀÛ¼º
__¸ðµâ°ú ÆÐÅ°Áö¸¦ Æ÷ÇÔÇÏ´Â ÆÄÀÏ´Ü ¹®¼È ¹®ÀÚ¿ ÀÛ¼º
____RST ¸¶Å©¾÷À¸·Î »ó¼¼ API ÀÛ¼º
____Ŭ·¡½º¿Í ¸Þ¼µåÇÔ¼öÀÇ ¹®¼È ¹®ÀÚ¿ ÀÛ¼º
____ÇÔ¼ö ¹®¼È ¹®ÀÚ¿ ÀÛ¼º
__´õ¿í Á¤±³ÇÑ ¸¶Å©¾÷ ±â¹ý
__½ºÇÎÅ©½º¸¦ »ç¿ëÇÑ ¼³¸í¼ »ý¼º
____½ºÇÎÅ©½º Äü½ºÅ¸Æ® »ç¿ë
____½ºÇÎÅ©½º ¼³¸í¼ ÀÛ¼º
____¼³¸í¼¸¦ À§ÇÑ 4+1 ºä ÀÛ¼º
____±¸Çö ¹®¼ ÀÛ¼º
____½ºÇÎÅ©½º ±³Â÷ ÂüÁ¶ »ý¼º
____½ºÇÎÅ©½º ÆÄÀÏÀ» µð·ºÅ͸®·Î ¸®ÆÑÅ͸µ
____·¹°Å½Ã ¹®¼ ´Ù·ç±â
__¼³¸í¼ ÀÛ¼º
__¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö
____¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö À¯½º ÄÉÀ̽º
____¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö µµ±¸ ´Ù·ç±â
__¿ä¾à
____µðÀÚÀÎ °í·Á »çÇ×°ú Æ®·¹À̵å¿ÀÇÁ