°ß°íÇϸ鼵µ È®À强ÀÌ ¶Ù¾î³ ÆÄÀ̽ã Äڵ带 ¸¸µå´Â ºñ¹ýÆÄÀ̽ãÀº ´©±¸³ª ½±°Ô ½ÃÀÛÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. ±×·¯³ª ÀÌ Ã¥¿¡¼ ¼Ò°³ÇÏ´Â ´ÙÀ½ ³»¿ëÀ» Á¦´ë·Î ¼÷ÁöÇÏÁö ¾Ê°í °³¹ßÀ» ÇÏ´Ùº¸¸é ´õ ÀÌ»óÀº ¼öÁ¤ÀÌ ºÒ°¡´ÉÇÑ Äڵ带 ¸¶ÁÖÇÏ°Ô µÈ´Ù. ¾îµð¼ºÎÅÍ ¹«¾ùÀÌ À߸øµÈ °É±î? ÀÌ Ã¥À» ÅëÇØ ÆÄÀ̽ãÀÇ Ã¶ÇÐÀ» µû¸£´Â ÆÄÀ̽㽺·¯¿î Ŭ¸° Äڵ带 ÀÛ¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ.
ÆÄÀ̽ãÀ¸·Î ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé°í µ¿·á ÇÁ·Î±×·¡¸Ó¸¦ °¡¸£Ä¡´Âµ¥ ´ëºÎºÐÀÇ ½Ã°£À» º¸³½ ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾îÀÌ´Ù. ÆÄÀ̽㠿ܿ¡´Â ¼ÒÇÁÆ®¿þ¾î ¾ÆÅ°ÅØó, ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö(functional programming), ºÐ»ê ½Ã½ºÅÛ°ú ÄÁÆÛ·±½º ¹ßÇ¥¿¡ °ü½ÉÀ» °¡Áö°í ÀÖ´Ù. Euro Python 2016°ú 2017¿¡¼ ¿¬»ç·Î È°µ¿Çß´Ù. ÀúÀÚ¿¡ ´ëÇØ ´õ ÀÚ¼¼È÷ ¾Ë±â ¿øÇÑ´Ù¸é GitHub¿¡¼ rmariano °èÁ¤À¸·Î °Ë»öÇÒ ¼ö ÀÖ´Ù.
¹ßÇ¥ ÀڷḦ °øÀ¯ÇÏ´Â http://speakerdeck.com »çÀÌÆ®ÀÇ »ç¿ëÀÚ À̸§Àº rmarianoÀÌ´Ù.
¼¹® chapter 1 ¼Ò°³, ÄÚµå Æ÷¸ÅÆðú µµ±¸Å¬¸° ÄÚµåÀÇ ÀÇ¹Ì Å¬¸° ÄÚµåÀÇ Á߿伺 Ŭ¸° Äڵ忡¼ ÄÚµå Æ÷¸ÅÆÃÀÇ ¿ªÇÒ ÇÁ·ÎÁ§Æ® ÄÚµù ½ºÅ¸ÀÏ °¡À̵å Áؼö Docstring°ú ¾î³ëÅ×ÀÌ¼Ç Docstring ¾î³ëÅ×ÀÌ¼Ç ¾î³ëÅ×À̼ÇÀº docstringÀ» ´ëüÇÏ´Â °ÍÀϱî? ±âº» Ç°Áú Çâ»óÀ» À§ÇÑ µµ±¸ ¼³Á¤¿ä¾àchapter 2 ÆÄÀ̽㽺·¯¿î(pythonic) ÄÚµåÀ妽º¿Í ½½¶óÀ̽º ÀÚü ½ÃÄö½º »ý¼º ÄÁÅؽºÆ® °ü¸®ÀÚ(context manager) ÄÁÅؽºÆ® °ü¸®ÀÚ ±¸ÇöÇÁ·ÎÆÛƼ, ¼Ó¼º°ú °´Ã¼ ¸Þ¼µåÀÇ ´Ù¸¥ ŸÀÔµéÆÄÀ̽㿡¼ÀÇ ¹ØÁÙ ÇÁ·ÎÆÛƼ ÀÌÅÍ·¯ºí °´Ã¼ ÀÌÅÍ·¯ºí °´Ã¼ ¸¸µé±â ½ÃÄö½º ¸¸µé±â ÄÁÅ×ÀÌ³Ê °´Ã¼ °´Ã¼ÀÇ µ¿ÀûÀÎ ¼Ó¼ºÈ£ÃâÇü(callable) °´Ã¼ ¸ÅÁ÷ ¸Þ¼µå ¿ä¾àÆÄÀ̽㿡¼ À¯ÀÇÇÒ Á¡ º¯°æ °¡´ÉÇÑ(mutable) ÆĶó¹ÌÅÍÀÇ ±âº» °ª ³»Àå(built-in) ŸÀÔ È®Àå ¿ä¾à Âü°í ÀÚ·á chapter 3 ÁÁÀº ÄÚµåÀÇ ÀϹÝÀûÀΠƯ¡°è¾à¿¡ ÀÇÇÑ µðÀÚÀÎ »çÀüÁ¶°Ç(precondition) »çÈÄÁ¶°Ç(postcondition) ÆÄÀ̽㽺·¯¿î °è¾à °è¾à¿¡ ÀÇÇÑ µðÀÚÀÎ(DbC) - °á·Ð ¹æ¾îÀû(defensive) ÇÁ·Î±×·¡¹Ö ¿¡·¯ Çڵ鸵 ÆÄÀ̽㿡¼ ¾î¼³¼Ç »ç¿ëÇϱ⠰ü½É»çÀÇ ºÐ¸® ÀÀÁý·Â(cohesion)°ú °áÇÕ·Â(coupling) °³¹ß Áöħ ¾à¾î DRY/OAOO YAGNI KIS EAFP/LBYL ÄÄÆ÷Áö¼Ç°ú »ó¼Ó »ó¼ÓÀÌ ÁÁÀº ¼±ÅÃÀÎ °æ¿ì »ó¼Ó ¾ÈƼÆÐÅÏÆÄÀ̽ãÀÇ ´ÙÁß»ó¼Ó ÇÔ¼ö¿Í ¸Þ¼µåÀÇ ÀÎÀÚ ÆÄÀ̽ãÀÇ ÇÔ¼ö ÀÎÀÚ µ¿ÀÛ¹æ½Ä ÇÔ¼ö ÀÎÀÚÀÇ °³¼ö ¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎ ¿ì¼ö »ç·Ê °á·Ð ¼ÒÇÁÆ®¿þ¾îÀÇ µ¶¸³¼º(orthogonality) ÄÚµå ±¸Á¶ ¿ä¾à Âü°í ÀÚ·á chapter 4 SOLID ¿øÄ¢´ÜÀÏ Ã¥ÀÓ ¿øÄ¢ ³Ê¹« ¸¹Àº Ã¥ÀÓÀ» °¡Áø Ŭ·¡½º Ã¥ÀÓ ºÐ»ê °³¹æ/Æó¼â ¿øÄ¢ °³¹æ/Æó¼â ¿øÄ¢À» µû¸£Áö ¾ÊÀ» °æ¿ì À¯Áöº¸¼öÀÇ ¾î·Á¿ò È®À强À» °¡Áø À̺¥Æ® ½Ã½ºÅÛÀ¸·Î ¸®ÆÑÅ丵 À̺¥Æ® ½Ã½ºÅÛ È®Àå OCP ÃÖÁ¾ Á¤¸® ¸®½ºÄÚÇÁ ġȯ ¿øÄ¢(LSP) µµ±¸¸¦ »ç¿ëÇØ LSP ¹®Á¦ °Ë»çÇϱ⠾ָÅÇÑ LSP À§¹Ý »ç·Ê LSP ÃÖÁ¾ Á¤¸® ÀÎÅÍÆäÀ̽º ºÐ¸® ¿øÄ¢ ³Ê¹« ¸¹Àº ÀÏÀ» ÇÏ´Â ÀÎÅÍÆäÀ̽ºÀÎÅÍÆäÀ̽º´Â ÀÛÀ»¼ö·Ï ÁÁ´Ù. ÀÎÅÍÆäÀ̽º´Â ¾ó¸¶³ª ÀÛ¾Æ¾ß ÇÒ±î? ÀÇÁ¸¼º ¿ªÀü ¾ö°ÝÇÑ ÀÇÁ¸ÀÇ ¿¹ ÀÇÁ¸¼ºÀ» °Å²Ù·Î¿ä¾à Âü°í ÀÚ·á chapter 5 µ¥ÄÚ·¹ÀÌÅ͸¦ »ç¿ëÇÑ ÄÚµå °³¼±ÆÄÀ̽ãÀÇ µ¥ÄÚ·¹ÀÌÅÍ ÇÔ¼ö µ¥ÄÚ·¹ÀÌÅÍ Å¬·¡½º µ¥ÄÚ·¹ÀÌÅÍ´Ù¸¥ À¯ÇüÀÇ µ¥ÄÚ·¹ÀÌÅ͵¥ÄÚ·¹ÀÌÅÍ¿¡ ÀÎÀÚ Àü´Þ µ¥ÄÚ·¹ÀÌÅÍ È°¿ë ¿ì¼ö »ç·Ê µ¥ÄÚ·¹ÀÌÅÍÀÇ È°¿ë - ÈçÇÑ ½Ç¼ö ÇÇÇϱ⠷¡ÇÎµÈ ¿øº» °´Ã¼ÀÇ µ¥ÀÌÅÍ º¸Á¸µ¥ÄÚ·¹ÀÌÅÍ ºÎÀÛ¿ë ó¸® ¾î´À °÷¿¡¼³ª µ¿ÀÛÇÏ´Â µ¥ÄÚ·¹ÀÌÅÍ ¸¸µé±â µ¥ÄÚ·¹ÀÌÅÍ¿Í DRY ¿øÄ¢ µ¥ÄÚ·¹ÀÌÅÍ¿Í °ü½É»çÀÇ ºÐ¸® ÁÁÀº µ¥ÄÚ·¹ÀÌÅÍ ºÐ¼® ¿ä¾àÂü°í ÀÚ·á chapter 6 µð½ºÅ©¸³ÅÍ·Î ´õ ¸ÚÁø °´Ã¼ ¸¸µé±âµð½ºÅ©¸³ÅÍ °³¿ä µð½ºÅ©¸³ÅÍ ¸ÞÄ¿´ÏÁò µð½ºÅ©¸³ÅÍ ÇÁ·ÎÅäÄÝÀÇ ¸Þ¼µå Ž»öµð½ºÅ©¸³ÅÍÀÇ À¯Çüºñµ¥ÀÌÅÍ(non-data) µð½ºÅ©¸³Å͵¥ÀÌÅÍ µð½ºÅ©¸³ÅÍ µð½ºÅ©¸³ÅÍ ½ÇÀüµð½ºÅ©¸³Å͸¦ »ç¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç ´Ù¸¥ ÇüÅÂÀÇ µð½ºÅ©¸³ÅÍ µð½ºÅ©¸³ÅÍ¿¡ ´ëÇÑ Ãß°¡ °í·Á»çÇ× µð½ºÅ©¸³ÅÍ ºÐ¼®ÆÄÀ̽㠳»ºÎ¿¡¼ÀÇ µð½ºÅ©¸³ÅÍ È°¿ë µ¥ÄÚ·¹ÀÌÅ͸¦ µð½ºÅ©¸³ÅÍ·Î ±¸ÇöÇϱ⠿ä¾àÂü°í ÀÚ·á chapter 7 Á¦³Ê·¹ÀÌÅÍ »ç¿ëÇϱâ±â¼úÀû ¿ä±¸»çÇ× Á¦³Ê·¹ÀÌÅÍ ¸¸µé±â Á¦³Ê·¹ÀÌÅÍ °³¿ä Á¦³Ê·¹ÀÌÅÍ Ç¥Çö½Ä ÀÌ»óÀûÀÎ ¹Ýº¹°ü¿ëÀûÀÎ ¹Ýº¹ ÄÚµåÆÄÀ̽ãÀÇ ÀÌÅÍ·¹ÀÌÅÍ ÆÐÅÏ ÄÚ·çƾ(coroutine) Á¦³Ê·¹ÀÌÅÍ ÀÎÅÍÆäÀ̽ºÀÇ ¸Þ¼µå ÄÚ·çƾ °í±Þ ÁÖÁ¦ÀÛÀº ÄÚ·çƾ¿¡ À§ÀÓÇϱâ - yield from ±¸¹® ºñµ¿±â ÇÁ·Î±×·¡¹Ö ¿ä¾àÂü°í ÀÚ·á chapter 8 ´ÜÀ§ Å×½ºÆ®¿Í ¸®ÆÑÅ丵µðÀÚÀÎ ¿øÄ¢°ú ´ÜÀ§ Å×½ºÆ® ÀÚµ¿ÈµÈ Å×½ºÆ®ÀÇ ´Ù¸¥ ÇüÅ ´ÜÀ§ Å×½ºÆ®¿Í ¾ÖÀÚÀÏ ¼ÒÇÁÆ®¿þ¾î °³¹ß´ÜÀ§ Å×½ºÆ®¿Í ¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎ Å×½ºÆ®ÀÇ °æ°è Á¤Çϱâ Å×½ºÆ®¸¦ À§ÇÑ ÇÁ·¹ÀÓ¿öÅ©¿Í µµ±¸ ´ÜÀ§ Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©¿Í ¶óÀ̺귯¸® ÄÚµå Ä¿¹ö¸®Áö ¸ðÀÇ(mock) °´Ã¼ ¸®ÆÑÅ丵 ÄÚµåÀÇ ÁøÈ »ó¿ë Äڵ常 ÁøÈÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù. ´ÜÀ§ Å×½ºÆ®¿¡ ´ëÇÑ Ãß°¡ ³íÀÇ ¼Ó¼º ±â¹Ý Å×½ºÆ®º¯Çü Å×½ºÆ®Å×½ºÆ® ÁÖµµ °³¹ß °£·« ¼Ò°³¿ä¾àÂü°íchapter 9 ÀϹÝÀûÀÎ µðÀÚÀÎ ÆÐÅÏÆÄÀ̽㿡 µðÀÚÀÎ ÆÐÅÏ Àû¿ë ½Ã °í·Á»çÇ× ½ÇÀü ¼ÓÀÇ µðÀÚÀÎ ÆÐÅÏ »ý¼º(creational) ÆÐÅÏ ±¸Á¶(structural) ÆÐÅÏÇൿ(behavioral) ÆÐÅÏ Null °´Ã¼ ÆÐÅÏ µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇÑ ÃÖÁ¾ Á¤¸® µðÀÚÀο¡ ´ëÇÑ ÆÐÅÏÀÇ ¿µÇ⼺ ¸ðµ¨ÀÇ À̸§ ¿ä¾à Âü°í chapter 10 Ŭ¸° ¾ÆÅ°ÅØóŬ¸° Äڵ忡¼ Ŭ¸° ¾ÆÅ°ÅØó·Î °ü½É»çÀÇ ºÐ¸® Ãß»óÈ ¼ÒÇÁÆ®¿þ¾î ÄÄÆ÷³ÍÆ®ÆÐÅ°Áö ÄÁÅ×À̳ÊÀ¯½ºÄÉÀ̽ºÄڵ强ñ½º ºÐ¼® ¿ä¾à Âü°í