(¾´ ³¯ : 2001-07-25)
Á¦°¡ °¡²û ¸»¾¸µå·ÈÁö¸¸ ¾ð¾î¸¦ ¹è¿ï ¶§´Â Á÷Á¢ µû¶óÇØº¸°í, ¸¸µé¾îº¸´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù.
¿©·¯ºÐµµ Áö±Ý±îÁö ÇÔ²² °øºÎÇÏ¸é¼ ¿¬½ÀÀ» ¸¹ÀÌ ÇØº¸¼Ì°ÚÁÒ?
±×·¸´Ù¸é ¾Æ·¡¿Í °°Àº ¸Þ½ÃÁöµµ ¸¹ÀÌ º¸¼Ì°Ú³×¿ä.
|
>>> print ¹æ°¡~ File "<stdin>", line
1 print ¹æ°¡~ ^ SyntaxError: invalid syntax |
À§¿¡¼± ¡®¹æ°¡~¡¯¶ó´Â ¹®ÀÚ¿À» Ãâ·ÂÇÏ·Á°í Çߴµ¥, ¹º°¡ ¹®Á¦°¡ »ý±ä °Í °°ÁÒ?
¸Þ½ÃÁö°¡ ³ÇØÇÑ °Í °°Àºµ¥¡¦ ¹«½¼ ¶æÀÎÁö ÇØµ¶À» ÇØº¼±î¿ä?
File "<stdin>", line 1
<stdin> ÆÄÀÏÀÇ 1¹øÂ° ÁÙ¿¡¼
print ¹æ°¡~
^
^·Î Ç¥½ÃµÈ ºÎºÐ¿¡
SyntaxError: invalid syntax
À߸øµÈ ±¸¹®À¸·Î ÀÎÇØ ¿À·ù°¡ ¹ß»ýÇßÀ½
ÇÑ ¸¶µð·Î ¹®¹ýÀÌ Æ²·È´Ù´Â ¾ê±â±º¿ä.
¿©±â¼ <stdin>À̶ó´Â °Ç Ç¥ÁØ ÀÔ·Â, Áï Űº¸µå¸¦ ÅëÇØ ÀԷµǴ °ÍÀ» ¶æÇÕ´Ï´Ù.
´ëȽÄÀ¸·Î ÀÛ¼ºÇÏÁö ¾Ê°í ÆÄÀÏ·Î ÀÛ¼ºÇؼ ½ÇÇà½ÃÄ×´Ù¸é ±× ÆÄÀÏÀÇ À̸§ÀÌ ³ª¿Ô°ÚÁö¿ä.
ÀÌ·¸°Ô ÆÄÀ̽ãÀº ÇÁ·Î±×·¥ ½ÇÇà Áß¿¡ ¹®Á¦°¡ »ý±â¸é, ¾îµð°¡ ¾î¶»°Ô À߸øµÆ´ÂÁö ÆÇ´ÜÇØ¼ ¿ì¸®¿¡°Ô ¾Ë·ÁÁÝ´Ï´Ù.
±×·¯¸é ¿ì¸®´Â ±× ºÎºÐÀ» ¼öÁ¤Çؼ Àß ÀÛµ¿Çϵµ·Ï ÇÏ¸é µÇÁö¿ä.
±×·±µ¥, ÇÁ·Î±×·¥À» Â¥´Ùº¸¸é Æò¼Ò¿¡´Â Àß µ¹¾Æ°¡´Ù°¡ °¡²û¾¿ ¹®Á¦°¡ »ý±â´Â °æ¿ìµµ ÀÖ´ä´Ï´Ù.
´ÙÀ½ÀÇ ¿¹Á¦°¡ ¹Ù·Î ±×·± °æ¿ìÀä, µÎ ¼ö¸¦ °öÇÏ°í ³ª´²¼ ´õÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
|
>>> def f(a,
b): ... return (a * b) + (a / b) ... >>> f(4,2) 10 |
¾ÆÁ÷Àº º°´Ù¸¥ ¹®Á¦°¡ ¾ø¾îº¸ÀÌÁÒ?
ÇÏÁö¸¸ µÎ ¹øÂ° ÀÎÀÚ·Î 0À» ³Ñ°ÜÁÖ¸é ³¸®°¡ ³³´Ï´Ù.
|
>>> f(3,0) Traceback (most recent
call last): File "<stdin>", line
1, in ? File "<stdin>", line
2, in f ZeroDivisionError: integer division or modulo by zero |
Á¤¼ö¸¦ 0À¸·Î ³ª´©´Â ¿À·ù°¡ ¹ß»ýÇß´Ù°í Çϴ±º¿ä.
¿ø·¡ ¼ýÀÚ¸¦ 0À¸·Î ³ª´ ¼ö°¡ ¾øÁÒ?
±×·¸´Ù¸é ÀÌ ÇÔ¼ö´Â ¼ÕÀ» Á» ºÁ¾ß°Ú³×¿ä.
|
>>> def f(a,
b): ... if a and b: # a¿Í
b°¡
µÑ
´Ù 0ÀÌ
¾Æ´Ò
¶§ ... return (a * b) + (a
/ b) ... elif a: # ±×·¸Áö ¾Ê°í
a¸¸ 0ÀÌ
¾Æ´Ò
¶§ ... return 'ºÒ´É' ... else: # µÑ ´Ù
0ÀÏ
¶§ ... return 'ºÎÁ¤' ... |
ÀÌÁ¦ Á» ±×·² µí Çϳ׿ä.
|
>>> print
f(3,0) ºÒ´É >>> print
f(0,0) ºÎÁ¤ >>> |
OXÄûÁî!! ÀÌÁ¦ ÀÌ ÇÔ¼ö´Â ´õ ÀÌ»ó ¿À·ù°¡ »ý±æ ÀÏÀÌ ¾ø°ÚÁÒ?
±×·¸´Ù±¸¿ä?
°ú¿¬ ±×·²±î¿ä¡¦
|
>>> f(300000,
500000) Traceback (most recent
call last): File "<stdin>", line
1, in ? File "<stdin>", line
3, in f OverflowError: integer multiplication |
ÀÎÀÚ·Î ¹ÞÀº µÎ ¼öÀÇ °öÀÌ Á¤¼öÇüÀ¸·Î ó¸®Çϱ⿡´Â ³Ê¹« Å« °ªÀÌ¶ó¼ ¿À·ù°¡ ¹ßÇàÇß±º¿ä.
À½¡¦ ¶Ç ÀÌ·± °Ç¡¦?
|
>>> f(À̽Ê,
¿À) #%$^*#<%@??? --; |
ÂÁ¡¦
ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Ùº¸¸é ¿À·ù°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Â °æ¿ì´Â ³¡µµ ¾ø½À´Ï´Ù.
¿ì¸®°¡ ÀÌ·± ¿À·ù¸¦ ¸ðµÎ ¿¹»óÇØ¼ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù´Â °ÍÀº Á¤¸»·Î ¡®³ë°¡´Ù¡¯¶ó°í ¹Û¿¡ ÇÒ ¼ö ¾ø°Ú³×¿ä.
¾ÕÀÇ ¿¹¿¡¼ ºÒ´É°ú ºÎÁ¤À» Á¤ÇØÁØ °ÍÀº ³ª»ÚÁö ¾Ê´Ù°í ÇÏ´õ¶óµµ, ´Ù¸¥ µÎ °æ¿ì±îÁö °¢°¢ ó¸®ÇØÁÖ´Â °Ç ½Ã°£ ³¶ºñÀ̰ÚÁÒ?
´ÙÇàÈ÷ ÆÄÀ̽㿡¼± ÀÌ·± ¹®Á¦¸¦ ½±°Ô ÇØ°áÇØÁÖ´Â ¹æ¹ýÀÌ ÀÖ´ä´Ï´Ù.
À§¿Í °°ÀÌ ÇÁ·Î±×·¡¸ÓÀÇ Àǵµ¿Í µ¿¶³¾îÁø »óȲÀÌ ¹ß»ýÇÏ´Â °ÍÀ» ¿¹¿Ü(exception)¶ó°í ÇØ¼, ¿¹¿Ü°¡ ¹ß»ýÇÏ¸é ¾î¶² Á¶Ä¡¸¦ ÃëÇÒ °ÍÀÎÁö Á¤ÇØÁÖ´Â °ÍÀÌÁÒ.
±×·³ ¿¹¿Ü¸¦ ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÔ¼ö¸¦ ¼öÁ¤ÇØ º¸µµ·Ï ÇÏÁö¿ä.
|
>>> def f(a,
b): ... try: ... if a and b: ... return
(a * b) + (a / b) ... elif a: ... return
'ºÒ´É' ... else: ... return
'ºÎÁ¤' ... except: ... return '¶È ¹Ù·Î »ì¾Æ¶ó' |
º¸½Ã´Â °Íó·³ ¹æ¹ýÀº °£´ÜÇÕ´Ï´Ù.
±âº»ÀûÀÎ ¹®ÀåµéÀ» try ¹Ø¿¡ ³Ö¾îÁÖ°í, ¿¹¿Ü°¡ ¹ß»ýÇßÀ» ¶§ ó¸®ÇÒ ºÎºÐÀº except ¹Ø¿¡ ³Ö¾îÁÖ¸é µË´Ï´Ù.
ÀÏ´Ü ½Ãµµ(try)ÇØº¸´Ù°¡ ¹®Á¦°¡ »ý±â¸é(except) ó¸®ÇØÁÖ´Â °ÍÀÌÁÒ.
¿¹¿Ü´Â ¿À·ù(error)º¸´Ù ´õ ³ÐÀº °³³äÀ̱ä ÇÏÁö¸¸ Áö±ÝÀº ºñ½ÁÇÏ°Ô »ý°¢Çϼŵµ µÇ±¸¿ä, C++°ú Java¿¡¼µµ ºñ½ÁÇÏ°Ô »ç¿ëµÈ´ä´Ï´Ù.
»õº® ¼¼ ½Ã°¡ ³Ñ¾î¹ö·È³×¿ä.
¾îÁ¦ ½¬±â´Â ÇßÁö¸¸ ¿À´Ã ÇÏ·ç´Â ¶Ç Ä¿ÇÇ ¸Ô°í ¸É¸É~ÇØ¾ß°Ú¾î¿ä.
±×·³ ÁÁÀº ÇÏ·ç µÇ¼¼¿ä~.