ÆÄÀ̽ã Áö¿ªº¯¼ö Áú¹®

   Á¶È¸ 4632   Ãßõ 0    

안녕하세요

파이썬에서


def aaa():
    x = 11


def bbb():
    y = x + 13
    print(y)

bbb()


이렇게 짰다고 했을 때, aaa함수의 변수 x를 bbb에서 사용할 수 있게 하려면 어떻게 해야하는지 궁금합니다.

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
±èÁ¦¿¬ 2017-02
def aaa():
    global x
    x = 11
     
³×ÀÌÃÄ 2017-02
´äº¯°¨»çÇÕ´Ï´Ù. ¸»¾¸ÇϽŴë·Î Çغôµ¥ ¾ÈµÇ³×¿ä...

x°¡ global¿¡´Â ¸í½Ã°¡ ¾ÈµÇ¾î Àִµ¥, ÇÔ¼öaaa¿¡ global x¶ó°í Çصµ µÇ³ª¿ä?
±èÁ¦¿¬ 2017-02
3.0¿¡¼­´Â Á» Ʋ·ÁÁ³³ªºÁ¿ä ..
ÀÚ¹Ùó·³ ¹Ù²ïµí ÇÕ´Ï´Ù.


def aaa():
    x = 11


def bbb():
    y = x + 13
    print(y)

x=0
bbb()
NeOpLe 2017-02
¸ÕÀú ÇÔ¼ö ¹Û¿¡¼­ ¼±¾ðÇÏ°í,  global x ÀÌ·¸°Ô ÇÔ¼ö ³»¿¡¼­ import ÇØ¾ß ÇÕ´Ï´Ù.

x = 0

def aaa()
  global x
  x = 11
     
³×ÀÌÃÄ 2017-02
ÇÔ¼ö¹Û¿¡ x = 0À» ÁöÁ¤ÇÏÁö ¾Ê°í,
ÇÔ¼ö aaa¿¡ Á¤ÀǵǾî ÀÖ´Â x = 11 ÀÌ°ÍÀ»
ÇÔ¼ö bbb¿¡ ºÒ·¯¿Í¼­, x°ªÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô´Â ¸øÇϳª¿ä??
          
°øÁß È­Àå½ÇÀ» °³ÀÎ Áý¾È¿¡ ¼³Ä¡ÇÏÁö´Â ¾ÊÁö¿ä.¤¾¤¾
          
Á¤ÀǼ® 2017-02
Á¦°¡ ÆÄÀ̽ãÀº Àß ¸ð¸£Áö¸¸,,
C/C++ °°Àº °æ¿ì¿¡´Â return °ª ÇüÅ·ΠÇÔ¼ö ³»ºÎÀÇ °ªÀ» ´Ù¸¥ ÇÔ¼ö·Î º¸³¾ ¼ö ÀÖ½À´Ï´Ù.
ÆÄÀ̽ãÀº ¾ÈµÇ·Á³ª¿ä?
¹«¾Æ 2017-02
Èì... ÆÄÀ̽ãÀº ¹ö±×¸¦ ¸¹ÀÌ ¸¸µé¾î ³¾ ¼ö ÀÖ´Â À§ÇèÇÑ °ÍÀ̱º¿ä.
Áö¿ªº¯¼ö¸¦ Àü¿ª¿¡¼­ »ç¿ë ÇϽǷÁ¸é
global ·Î Àü¿ª ÁöÁ¤ÇÏ½Ã¸é µË´Ï´Ù
±×¸®°í Àü¿ªº¯¼ö¸¦ ÇÔ¼ö¿¡¼­ ¾²½Ç·Á¸é Ãʱ⿡ º¯¼ö ÁöÁ¤ ÇÏ¼Å¾ß µÇ°í, ±×³É ÁöÁ¤ ¾øÀÌ ¾²½Ç·Á¸é
ÇÔ¼ö¿¡¼­ return x ·Î °ªÀ» ¸®ÅÏ ¹Þ¾Æ¼­ ¾²½Ã¸é µË´Ï´Ù
³×¿ÀÇÃ´Ô ¸ð¸£´Â°Ô ¾øÀ¸¼¼À¯~~|
Wheein 2017-02
ÆÄÀ̽㿡¼­ ±âº»ÀûÀ¸·Î º¯¼ö °ªÀ» ÀÐÀ» ¶§´Â
1. local¿¡ ¼±¾ðµÇ¾îÀÖ´ÂÁö È®ÀÎ
2. local¿¡ ¾øÀ¸¸é global¿¡¼­ È®ÀÎ
3. global¿¡µµ ¾øÀ¸¸é undefined error
ÀÇ °úÁ¤À» °ÅĨ´Ï´Ù.

±×·¯³ª º¯¼ö °ªÀ» ¾µ ¶§´Â ÆÄÀ̽ãÀÌ ±âº»ÀûÀ¸·Î ¸í½ÃÀû º¯¼ö ¼±¾ðÀ» ÇÏÁö ¾Ê±â ¶§¹®¿¡
1. local¿¡ ¼±¾ðµÇ¾î ÀÖÀ¸¸é no problem
2. local¿¡ ¼±¾ðÀÌ µÇ¾î ÀÖÁö ¾ÊÀ¸¸é
  2-a. local¿¡ »õ º¯¼ö¸¦ ¼±¾ð
  2-b. global¿¡ ÀÖ´Â º¯¼ö¿¡ °ªÀ» ¾¸
2-a¿Í 2-b Áß¿¡¼­ 2-a°¡ ¿ì¼±½Ã µË´Ï´Ù.
µû¶ó¼­ ´Ù¸¥ ÇÔ¼ö¿¡¼­µµ »ç¿ëµÉ Àü¿ªº¯¼öÀÇ °ªÀ» ¼öÁ¤Çϱâ À§Çؼ­´Â ¸ÕÀú global scope¿¡ º¯¼ö¸¦ ¼±¾ðÇÏ°í, aaa ÇÔ¼ö ³»¿¡¼­ "global º¯¼ö¸í"À» ÅëÇØ 2-bÀÇ °úÁ¤À» °ÅÄ¡µµ·Ï ¸í½ÃÇØÁÖ¼Å¾ß ÇÕ´Ï´Ù.

¾Æ´Ï¸é x °ªÀÌ °è¼Ó ¹Ù²î´Âµ¥ bbb¿¡¼­ x °ª¸¸ ¹Ù²ï °°Àº ·ÎÁ÷ÀÌ ½ÇÇàµÇ´Â°Ô ¸ñÀûÀ̽öó¸é, ÆÄÀ̽ãÀÌ first-class functionÀÓÀ» È°¿ëÇÏ¿©

>>> def make_bbb(x):
...    def _bbb():
...        y = x + 13
...        print (y)
...    return _bbb
...
>>> make_bbb(11)()
24
>>> make_bbb(20)()
33

°ú °°ÀÌ Àü¿ªº¯¼ö ¾øÀÌ ÇÁ·Î±×·¡¹Ö ÇÏ½Ç ¼öµµ ÀÖ½À´Ï´Ù.


QnA
Á¦¸ñPage 2032/5683
2015-12   1493712   ¹é¸Þ°¡
2014-05   4957245   Á¤ÀºÁØ1
2017-02   4753   ¸Þ·Ð
2017-02   25172   Àü¼³¼ÓÀǹ̡¦
2017-02   4974   ¿À·Î¶ó
2017-02   6345   ½ÅÀº¿Ö
2017-02   8188   ÀÌÅ¿í
2017-02   4676   ´Þ¸±±î
2017-02   4814   Sikieiki
2017-02   6075   ¾ËÆÄ°í
2017-02   5499   ¿©ÁÖ³ó¹Î76
2017-02   7690   Ä«ÇÁÄ«
2017-02   5002   ¼­µ¿±¹
2017-02   4822   ½ÅÀº¿Ö
2017-02   3662   ´ÃÆĶõ
2017-02   4691   ÇÞ»ìÇѽºÇ¬
2017-02   4916   AplPEC
2017-02   3689   ²Ü¹è¸À²Ü¹è
2017-02   4037   ¸Þ°¡³¯¹é
2017-02   6221   ±ÇÅ¿µ
2017-02   5790   ¸°µå¹ö±×
2017-02   8201   ÀÌ¿øÀçK