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

   Á¶È¸ 4643   Ãßõ 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 2055/5686
2014-05   4972802   Á¤ÀºÁØ1
2015-12   1509129   ¹é¸Þ°¡
2012-03   5822   ¾äÀÌÄï
2005-10   5822   ¹æÈ¿¹®
2005-08   5822   ¹ÚÁøÇÑ
2007-11   5822   ½ÅÀ¯È£
2016-02   5822   FOKKIA
2007-10   5822   ±èÅÂÇö
2014-08   5821   sprirea
2005-10   5821   ±è´ë¼º
2015-10   5821   µà¾ócpu
2013-05   5821   stellar
2007-12   5821   ÀÌ¿ø±â
2005-05   5821   À±È£¿ë
2013-12   5821   ºô´õ¯
2018-11   5821   Waterticket
2005-06   5821   ¹ÚÀç±Õ
2008-02   5821   ¹æÈ¿¹®
2006-06   5821   È«¿µÇ¥
2005-04   5821   ÇѸíÈÆ
2008-01   5821   ¼­¼öºÀ
2005-10   5821   ÇѼºÈ®