À̸§°ø°£

¼Ò °³

À̸§°ø°£ namespaceÀ̶õ ¹«¾ùÀΰ¡? ÀÚÁÖ ÀÌ·± Áú¹®À» µè´Â´Ù. À½, ±×°ÍÀº ÀÏÁ¾ÀÇ ¼³¸íÇϱ⠾î·Á¿î °ÍÀÌ´Ù. ±×°ÍÀÌ Æ¯º°È÷ º¹ÀâÇؼ­°¡ ¾Æ´Ï¶ó, ¿ÀÈ÷·Á ¸ðµç ¾ð¾îµéÀÌ ±×°ÍÀ» ´Ù¸£°Ô ó¸®Çϱ⠶§¹®ÀÌ´Ù. °³³äÀº ´ë´ÜÈ÷ Á÷¼³ÀûÀ̾, À̸§°ø°£Àº ÇÁ·Î±×·¥¾È¿¡ ÀÖ´Â °ø°£ ȤÀº Áö¿ªÀ¸·Î, °Å±â¿¡ À̸§ÀÌ(º¯¼ö, Ŭ·¡½º µîµîÀÌ) Á¸ÀçÇÑ´Ù.

±×°ÍµéÀÌ ³ªÅ¸³­ ÀÌÀ¯´Â (º£ÀÌÁ÷°ú °°Àº) ÃʱâÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î°¡ Àü¿ªº¯¼ö Global Variables¸¸À» °¡Á³±â ¶§¹®¿¡, ´Ù½Ã ¸»Çϸé, ±× Àü¿ªº¯¼öµéÀº ÇÁ·Î±×·¥ Àüü¸¦ ÅëÇÏ¿©¼­ - ½ÉÁö¾î´Â ÇÔ¼ö¾È¿¡¼­ Á¶Â÷ - º¸¿©Áú ¼ö ÀÖ¾ú±â ¶§¹®À̾ú´Ù. À̰Ͷ§¹®¿¡ °Å´ëÇÑ ÇÁ·Î±×·¥ÀÇ À¯Áö°¡ ¾î·Á¿ü´Âµ¥ ÇÁ·Î±×·¥ÀÇ ´Ù¸¥ ºÎºÐÀº ±×°ÍÀ» ÀνÄÇÏÁöµµ ¸øÇϴµ¥ ÇÁ·Î±×·¥ÀÇ ÇÑ ºÎºÐÀÌ ÇÑ º¯¼ö¸¦ ³Ê¹« ½±°Ô º¯°æÇÒ ¼ö ÀÖ¾ú±â ¶§¹®À̾ú´Ù. - ÀÌ°ÍÀº ºÎÀÛ¿ëside-effectÀ̶ó°í ºÒ¸®¿ü´Ù. À̹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÏ¿©, (Çö´ëÀÇ º£ÀÌÁ÷À» Æ÷ÇÔÇÏ¿©) ³ªÁßÀÇ ¾ð¾îµéÀº À̸§°ø°£À̶ó´Â °³³äÀ» µµÀÔÇÏ¿´´Ù. (C++Àº ÀÌ°ÍÀ» ÃÖ´ëÇÑ ¹Þ¾Æµé¿©¼­ ÇÁ·Î±×·¡¸Ó°¡ ÀڽŸ¸ÀÇ À̸§°ø°£À» ÇÁ·Î±×·¥ÀÇ ¾î´À °÷¿¡³ª ¸¸µé¼ö ÀÖµµ·Ï ÇÏ¿´´Ù. ÀÌ°ÍÀº ¶óÀ̺귯¸®¸¦ ¸¸µå´Â »ç¶÷µé¿¡°Ô´Â ´ë´ÜÈ÷ À¯¿ëÇÏ´Ù. ±×µéÀº ´Ù¸¥ °ø±ÞÀÚ°¡ Á¦°øÇÑ ¶óÀ̺귯¸®¿Í Á¶ÇÕµÉ ¶§ ÇÔ¼öÀÇ À̸§À» À¯ÀÏÇÏ°Ô À¯ÁöÇϱ⸦ ¿øÇÑ´Ù.)

ÆÄÀ̽ãÀÇ Á¢±Ù¹æ¹ý

ÆÄÀ̽㿡¼­ ¸ðµç ¸ðµÑÀº ÀڽŸ¸ÀÇ À̸§°ø°£À» »ý¼ºÇÑ´Ù. ±×·¯ÇÑ À̸§¿¡ Á¢±ÙÇϱâ À§Çؼ­ ¿ì¸®´Â ±× À̸§¾Õ¿¡ ¸ðµâÀÇ À̸§À» ¸í½ÃÀûÀ¸·Î ºÙÀÌ´ø°¡ ȤÀº ¿ì¸®°¡ »ç¿ëÇϱ⸦ ¿øÇÏ´Â ±× À̸§À» ¿ì¸®ÀÇ ¸ðµâ À̸§°ø°£¿¡ ¼öÀÔÇÏ¿©¾ß¸¸ ÇÑ´Ù. »õ·Î¿î °ÍÀº ¾ø´Ù, ¿ì¸®´Â ÀÌ¹Ì sys¸ðµâ°ú string¸ðµâ·Î ±×·¸°Ô ÇÏ°í ÀÖ´Â ÁßÀÌ´Ù. ¾î¶² ¸éÀ¸·Î Ŭ·¡½º Á¤ÀÇ ¶ÇÇÑ ÀڽŸ¸ÀÇ À̸§¿µ¿ªÀ» »ý¼ºÇÑ´Ù. ±×·¯¹Ç·Î, Ŭ·¡½ºÀÇ ¸Þ½îµå ȤÀº ¼Ó¼º¿¡ Á¢±ÙÇϱâ À§Çؼ­´Â, ¿ì¸®´Â ±× ½Çü º¯¼öÀÇ À̸§À» »ç¿ëÇÏ´ø°¡ ȤÀº Ŭ·¡½ºÀ̸§À» ¸ÕÀú »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.

ÆÄÀ̽㿡´Â ´ÜÁö 3°³ÀÇ À̸§°ø°£ÀÌ ÀÖ´Ù (ȤÀº ¿µ¿ª scopes):

  1. Áö¿ª ¿µ¿ª - ÇÔ¼ö ȤÀº ¸Þ½îµå ¾È¿¡¼­ Á¤ÀÇµÈ À̸§
  2. ¸ðµâ ¿µ¿ª - ÆÄÀϾȿ¡¼­ Á¤ÀÇµÈ À̸§
  3. ³»Àå ¿µ¿ª - ÆÄÀ̽ã ÀÚü¿¡¼­ Á¤ÀÇµÈ À̸§À¸·Î Ç×»ó »ç¿ë°¡´ÉÇÏ´Ù.

Áö±Ý±îÁö´Â ±×·±µ¥·Î ±¦Âú´Ù. ÀÌÁ¦ ´Ù¸¥ À̸§°ø°£¿¡ ÀÖ´Â º¯¼öµéÀÌ °°Àº À̸§À» °¡Áú ¶§ ÀÌ°ÍÀº ¾î¶»°Ô °øÁ¸Çϴ°¡? ȤÀº ÇöÀçÀÇ À̸§°ø°£¾È¿¡ ¾ø´Â À̸§ÀÌ ÂüÁ¶µÉ ¶§´Â? ¸ÕÀú ÀÌÀüÀÇ »óȲÀ» »ìÆ캸ÀÚ: ¸¸¾à ÇÑ ÇÔ¼ö°¡ X¶ó°í ºÎ¸£´Â º¯¼ö¿¡ ÂüÁ¶µÇ°í ±×¸®°í ±× ÇÔ¼ö¾È¿¡ (Áï Áö¿ª ¿µ¿ª¿¡) ¶Ç ´Ù¸¥ X °¡ Á¸ÀçÇÑ´Ù¸é ±×·¯¸é ¾ÕÀÇ °ÍÀÌ ¹Ù·Î ÆÄÀ̽㿡 ÀÇÇÏ¿© º¸¿©Áö°í »ç¿ëµÉ º¯¼öÀÌ´Ù. À̸§ÀÇ Ãæµ¹À» ÇÇÇÏ´Â °ÍÀº ÇÁ·Î±×·¡¸ÓÀÇ ÀϷμ­ °°Àº À̸§À» °¡Áø ¸ðµâ º¯¼ö¿Í Áö¿ª º¯¼ö ¸ðµÎ°¡ °°Àº ÇÔ¼ö¿¡¼­ ¿ä±¸µÇÁö ¾Êµµ·Ï ÇؾßÇÑ´Ù - Áö¿ª º¯¼ö´Â Àü¿ªº¯¼ö¸¦ µ¤À» °ÍÀÌ´Ù.

ÀϹÝÀûÀ¸·Î ¿©·¯ºÐÀº 'Àü¿ª' ¼­¼ú¹®ÀÇ »ç¿ëÀ» ÃÖ¼ÒÈ­ÇØ¾ß ÇÑ´Ù. ¸Å°³º¯¼ö·Î¼­ º¯¼ö¸¦ ³Ñ°Ü ¹Þ°í ±×¸®°í º¯°æµÈ º¯¼ö¸¦ ¹ÝȯÇÏ´Â °ÍÀÌ º¸Åë ´õ ÁÁ´Ù.

ÇöÀçÀÇ Áö¿ª À̸§°ø°£¾È¿¡ ¾ø´Â À̸§ÀÌ ÂüÁ¶µÉ ¶§, µÎ¹ø° ¿äÁ¡Àº ´ÙÀ½°ú °°ÀÌ ÇØ°áµÈ´Ù: ±× ÇÔ¼ö´Â Áö¿ª À̸§°ø°£¾ÈÀ» »ìÆ캸°í, ¸¸¾à ãÀ» ¼ö ¾ø´Ù¸é ±×·¯¸é ¸ðµâ ¿µ¿ªÀ» Á¶»çÇÏ°í ¸¸¾à °Å±â¿¡µµ ¾ø´Ù¸é ³»Àå ¿µ¿ªÀ» »ìÆ캻´Ù. ÀÌ°Í¿¡ ´ëÇÑ À¯ÀÏÇÑ ¹®Á¦Á¡Àº ¿ì¸®°¡ °ªÀ» ¿ÜºÎÀÇ º¯¼ö¿¡ ÇÒ´çÇÏ°íÀÚ ¿øÇÒ ¶§ÀÌ´Ù. ÀϹÝÀûÀ¸·Î ÀÌ°ÍÀº »õ·Î¿î º¯¼ö À̸§À» »ý¼ºÇÒ °ÍÀÌ´Ù, ±×·¯³ª ¿ì¸®´Â ±×·¯ÇÑ ÀÏÀÌ ÀϾÁú ¾Ê±â¸¦ ¿øÇÏ°í ±×·¡¼­ ¿ì¸®´Â ±× À̸§ÀÇ Áö¿ª ¹öÁ¯À» »ý¼ºÇÏÁö ¾ÊÀº °ÍÀ» È®ÀÎÇϱâ À§ÇÏ¿© Çѹø ´õ ±×°ÍÀ» Àü¿ª(global)À¸·Î ÁöÁ¤Çؾ߸¸ ÇÑ´Ù.

¿ì¸®´Â ÀÌ ¿¹Á¦¿¡¼­ ÀÌ ¸ðµç °ÍÀÌ ÀÛµ¿ÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ( ÀÌ°ÍÀº ¼ø¼öÈ÷ ±× ¿äÁ¡À» ¿¹½ÃÇÏ´Â °ÍÀÌ´Ù!):

# variables with module scope
W = 5
Y = 3

#parameters are like function variables
#so X has local scope
def spam(X):
   
   #tell function to look at module level and not create its own W
   global W

   Z = X*2 # new variable Z created with local scope
   W = X+5 # use module W as instructed above

   if Z > W:
      # print is a 'builtin-scope' name
      print "2 x X is greater than X + 5"
      return Z
   else:
      return Y # no local Y so uses module version

ÀÌ¿¡ ¿ì¸®°¡ sys ¿Í °°Àº ¸ðµâÀ» ¼öÀÔÇÒ ¶§ ¿ì¸®´Â sys ¶ó´Â À̸§À» Áö¿ªÀûÀ¸·Î »ç¿ë°¡´ÉÇÏ°Ô ÇÏ´Â °ÍÀÌ¸ç ±×¸®°í ¿ì¸®´Â ±× À̸§À» ¿ì¸®°¡ ¾Ë°í ÀÖ´Â °ÍÀ¸·Î °£ÁÖÇÔÀ¸·Î½á sys ¸ðµÑÀÇ À̸§°ø°£¾È¿¡ ÀÖ´Â À̸§µé¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.
¿ì¸®°¡ ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù¸é:

from sys import exit

¿ì¸®´Â exit ÇÔ¼ö¸¦ Áö¿ª À̸§°ø°£¿¡¸¸ °¡Á®¿Ã ¼ö ÀÖ´Ù. ¿ì¸®´Â ´Ù¸¥ ¾î¶² sys À̸§µµ »ç¿ëÇÒ ¼ö ¾øÀ¸¸ç, ½ÉÁö¾î´Â sys ÀÚüµµ »ç¿ëÇÒ ¼ö ¾ø´Ù.

±×¸®°í º£ÀÌÁ÷ ¿ª½Ã

º£ÀÌÁ÷Àº ÆÄÀ̽ã°ú Á¤ ¹Ý´ëÀÇ Á¢±Ù¹ýÀ» ÃëÇÏ¿© (¿À·¡µÈ º£ÀÌÁ÷ ÇÁ·Î±×·¥µé°ú ȣȯ¼ºÀ» À§ÇÏ¿©) ±âº» ¼³Á¤À¸·Î ¸ðµç º¯¼öµéÀ» Àü¿ªÀûÀ¸·Î ¸¸µç´Ù. ±×·¯³ª ÇÁ·Î±×·¡¸Ó°¡ ÇÔ¼ö¾È¿¡¼­ Áö¿ª LOCALº¯¼öµµ ¿ª½Ã ¸¸µé¼ö ÀÖµµ·Ï ÇØÁØ´Ù.

Tcl

³»°¡ ¾Æ´Â ÇÑ Æ¼Å¬¿¡¼­´Â À̸§¿µ¿ªÀ» Á¦¾îÇÏÁö ¾Ê´Â´Ù. ¾Æ¸¶µµ ÇÁ·Î±×·¥À» ÆĽºÇϴ ƼŬÀÇ µ¶Æ¯ÇÑ ¹æ½Ä¶§¹®¿¡ ±×·² °ÍÀÌ´Ù. ¾î¶² °æ¿ì¿¡µµ °Ñº¸±â¿¡ ¸ðµç º¯¼öµéÀº ÀÚ½ÅÀ» µÑ·¯½Î°í ÀÖ´Â Á÷Á¢ÀûÀΠȯ°æ¿¡ ´ëÇÏ¿© Áö¿ªÀûÀÌ´Ù - ÆÄÀÏ ¼öÁØÀÇ º¯¼ö´Â ±× ÆÄÀϾȿ¡ ÀÖ´Â ¸í·É¾îµé¿¡°Ô¸¸ º¸¿©Áö¸ç ÇÁ·Î½ÃÀú º¯¼ö´Â ÇÁ·Î½ÃÁ®¾È¿¡¼­¸¸ º¸¿©Áø´Ù. ±× µÎ À̸§°ø°£ »çÀÌÀÇ Åë½ÅÀ» À§Çؼ­ ¿©·¯ºÐÀº ±× °ªµéÀ» ¸Å°³º¯¼ö·Î ³Ñ°Ü ¹Þ¾Æ¾ß¸¸ ÇÑ´Ù.


Previous  Next  Contents


ÀÌ ÆäÀÌÁö¿¡ ´ëÇÏ¿© Áú¹® ȤÀº Á¦¾È»çÇ×ÀÌ ÀÖÀ¸¸é ´ÙÀ½ ÁÖ¼Ò·Î ³ª¿¡°Ô ¸ÞÀÏÀ» º¸³»¶ó: agauld@crosswinds.net