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

   Á¶È¸ 4640   Ãßõ 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 2054/5685
2015-12   1499765   ¹é¸Þ°¡
2014-05   4963302   Á¤ÀºÁØ1
2017-03   4217   »ßµ¹À̽½ÇÄÀÌ
2015-12   4217   ¾Ö´Ï¾Ç
2020-05   4217   ÀÌ´ëâ
2016-08   4217   ¼ÛÁøÇö
2014-10   4217   inquisitive
2018-08   4217   µð¾Æ°í¼ö
2017-07   4217   ÀϷиӽºÅ©
2018-08   4217   ȲÀ籤
2016-11   4218   ¼öÇÊó·³
2015-12   4218   Ç޴Թݺ¯°­¼è
2017-10   4218   ³ª¿ì¸¶Å©
2016-07   4218   Åäºê
2015-06   4218   °Ü¿ï³ª¹«
2014-09   4218   ¹ü¹üÀÌ
2018-06   4218   »ßµ¹À̽½ÇÄÀÌ
2016-02   4218   ±ô¹Ú±ô¹Ú°¡
2017-10   4218   ´ÃÆĶõ
2017-01   4218   ³ªÆÄÀÌ°­½ÂÈÆ
2018-08   4219   ½½·çÇÁ
2020-10   4219   Á¤»ó¾ï