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

   Á¶È¸ 4644   Ãßõ 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   4975719   Á¤ÀºÁØ1
2015-12   1511865   ¹é¸Þ°¡
2005-12   5823   ÀÌ¿µÀÍ
2011-12   5823   ¿¹°ü½Å±Ô½Ä
2006-03   5823   °û¼±È£
2017-09   5823   ÂîÁö·Î
2006-03   5823   ¹ÚÁ¤±æ
2005-05   5823   À±È£¿ë
2019-12   5823   Æĸ®´ë¿Õ
2007-11   5823   ³²Âù¿ì
2013-12   5823   ºô´õ¯
2008-05   5823   ¹ÚÀç¼®
2014-08   5823   ±è°Ç¿ì
2007-10   5823   À±¿µ¹è
2012-03   5823   ¾äÀÌÄï
2005-10   5823   ¹æÈ¿¹®
2005-08   5823   ¹ÚÁøÇÑ
2008-01   5823   ¼­¼öºÀ
2014-05   5823   SpringValley
2016-02   5823   FOKKIA
2008-04   5822   ±è¿ë¼ö_
2005-06   5822   ÇѸíÈÆ