볞 ê°ì ìë£ë ë°ìŽí° 곌íì ìí íìŽì¬ íë¡ê·žëë°/ìµì±ì² ì ì°žê³
íì¬ ì ìíììµëë€.
ðïž íšì êž°ìŽ
íšìì ê°ë 곌 ì¥ì
- ê°ë
íšìë ìŽë€ ìŒì ìííë ìœëì ë©ìŽëŠ¬, ëë ìœëì 묶ììŽëŒê³ ííí ì ììµëë€.
- ìì
ë§ìœ ëíì ëìŽë¥Œ 구íë íë¡ê·žëšìì ì¬ê°íì ëìŽë¥Œ 구íë ìì ìŽ ìë€ë©Ž, íŽë¹ ìì ì íšìííì¬ íìí ëë§ë€ ížì¶íë ê²ì ëë€.
- ì¥ì
- íìí ëë§ë€ ížì¶ ê°ë¥ : íšìë ë°ë³µì ìŒë¡ ìííŽìŒ íë ì 묎륌 í ë²ë§ ìì±íŽ ëê³ íìí ëë§ë€ ížì¶íì¬ ì¬ì©í ì ììµëë€. ìŽë ê² íë©Ž ìœë륌 ìì í ë ê°ì ìì ì ì¬ë¬ ë² ë°ë³µíì§ ììë ëê² ì£ ?
- ë ŒëŠ¬ì ìž ëšìë¡ ë¶í ê°ë¥ : íšìë ìœë륌 ë ŒëŠ¬ì ìž ëšìë¡ ëë ì ììµëë€. ê°ëší ëíì ê³ì°íë íë¡ê·žëšì ìì±íëëŒë ê³±ì ì íë ìœë, ë§ì ì íë ìœë, ëëì ì íë ìœë ë±ìŒë¡ ëë ì ììµëë€.
- ìœëì 캡ìí : íšìë ìœëì 캡ìíê° ê°ë¥í©ëë€. 캡ìíë íšìì ìží°íìŽì€ë§ ì ì ìíë©Ž ë€ë¥ž ì¬ëìŽ ìì ì ìœë륌 ìœê² ê°ì žë€ ì¬ì©í ì ìë í¹ì§ìŽ ììµëë€. ìží°íìŽì€ë¥Œ ì ìíë€ë ê²ì ìœëì ì ë ¥ëë ì ë ¥ê°ê³Œ ìœëì ìí ê²°ê³Œìž ì¶ë ¥ê°ì ëª íí íë€ë ê²ìžë°, ìŽ ìží°íìŽì€ê° ì ì ìë íšìëŒë©Ž ìœëì ëŽë¶ 구조륌 몰ëŒë íšì륌 ì¬ì©íë ë°ìë ì묎 묞ì ê° ììµëë€.
íšìì ì ìž
- ë°©ë²
def íšì ìŽëŠ (맀ê°ë³ì #1 ...):
ëª
ë ¹ë¬ž 1
ëª
ë ¹ë¬ž 2
return <ë°íê°>
- def : ‘definition’ì ì€ìë§ë¡, íšìì ì ì륌 ììíë€ë ì믞ì ëë€.
- íšì ìŽëŠ : íšì ìŽëŠì ê°ë°ìê° ë§ìëë¡ ì§ì í ì ìì§ë§ ìŒë°ì ìŒë¡ íìŽì¬ììë ë€ì곌 ê°ì ê·ì¹ì ì¬ì©í©ëë€.
- 1. ì묞ìë¡ ì ë ¥íë€. 2. ëìŽì°êž°ë¥Œ í 겜ì°ìë _ êž°ížë¥Œ ì¬ì©íë€. ex) save_model 3. ìì ì ëíëŽêž° ìíŽ ëì¬ì ëª ì¬ë¥Œ íšê» ì¬ì©íë 겜ì°ê° ë§ë€. ex) find_number 4. ìžë¶ì ê³µê°íë íšììŒ ê²œì° ì€ìë§ì ì¬ì©íì§ ìê³ ì§§ê³ ëª ë£í ìŽëŠìŒë¡ ì íë€.
- 맀ê°ë³ì(parameter) : 맀ê°ë³ìë íšììì ì ë ¥ê°ìŒë¡ ì¬ì©íë ë³ì륌 ì믞íë©°, 1ê° ìŽìì ê°ì ì ì ì ììµëë€.
- ëª ë ¹ë¬ž : ëª ë ¹ë¬žì ë°ëì ë€ì¬ì°êž°ë¥Œ í íì ìœë륌 ì ë ¥íŽìŒ í©ëë€. ìííŽìŒ íë ìœëë ì§êžê¹ì§ ë°°ìŽ ìŒë°ì ìž ìœë ìŠ, ifë for묞 ë±ì ì ìŽë¬žì ì¬ì©í ìë ìê³ , ê³ êž íë¡ê·žëë° êž°ë²ìŒë¡ íšì ìì íšì륌 ì¬ì©íêž°ë í©ëë€.
- ìì
def calculate_rectangle_area(x, y)
return x * y
íšì ìŽëŠì calculate_rectangle_areaìŽê³ , xì yëŒë 2ê°ì 맀ê°ë³ì륌 ì¬ì©íê³ ììµëë€. ì¬êž°ì returnì ì믞ë ê°ì ë°ííë€ë ë»ìŒë¡, xì y륌 ê³±í ê°ì ë°ííë íšìë¡ ìŽíŽíë©Ž ë©ëë€.
- ë°í?
ìœê° ìŽë µê² ëê»Žì§ ì ìë ë¶ë¶ìŽ ë°ë¡ 'ë°í’ìŽëŒë ê°ë ìžë°ì. ìŽë ìíìì íšìì ê°ì ê°ë ìŽëŒê³ ìê°íìë©Ž ë©ëë€.
ì륌 ë€ìŽì ìíìì f(x) = x + 1 ìŽëŒê³ íì ë, f(1)ì ê°ì ìŒë§ìŒê¹ì? ì í¬ë 2ëŒë ê²ì ì ì ììµëë€. ìŠ, íšì f(x)ìì xì 1ìŽ ë€ìŽê°ë©Ž 2ê° ë°íëë ê²ì ëë€.
íìŽì¬ì íšìë ê°ì ê°ë ì ëë€! ìíìì xì íŽë¹íë ê²ìŽ 맀ê°ë³ì, ìŠ ì ë ¥ê°ìŽê³ x + 1ì ê³ì° 곌ì ìŽ íšì ìì ìœëìŽë©° ê·ž ê²°ê³Œê° ë°íëë ê°ì ëë€.
ììì íšê» íšì ì€í ìì ìì볎Ʞ
- ìì ìœë
def calculate_rectangle_area(x, y):
return x * y
rectangle_x = 10
rectangle_y = 20
print("ì¬ê°í xì êžžìŽ:", rectangle_x)
print("ì¬ê°í yì êžžìŽ:", rectangle_y)
print("ì¬ê°íì ëìŽ:", calculate_rectangle_area(rectangle_x, rectangle_y))
ì¬ê°í xì êžžìŽ: 10
ì¬ê°í yì êžžìŽ: 20
ì¬ê°íì ëìŽ: 200
- ìì ë¶ì
첫 ë²ì§ž : 1íìì íšìê° ì ìë def ë¶ë¶ì ì€íëì§ ììµëë€. ëšì§ ì ìë§ íë ê²ìŒë¡ íšìë§ íìŒì ì ì¥íê³ íìŽì¬ ëª ë ¹ìŒë¡ ì€íì쌰ì ë ë³ëì ì¶ë ¥ìŽ ìŒìŽëì§ ììµëë€. ì íí ë§íë©Ž, ì묎ê²ë ì€íëì§ ìë ê²ì²ëŒ 볎ìŽì§ë§ ì€ì ë¡ë íŽë¹ ìœë륌 ë©ëªšëŠ¬ì ì ë¡ëíì¬ ë€ë¥ž ìœë륌 ížì¶íŽ ì¬ì©í ì ìëë¡ ì€ë¹ 곌ì ì ê±°ì¹ë ê²ì ëë€.
ë ë²ì§ž : íšìê° ìííŽìŒ íë ëª ë ¹ìŽ ì€íë©ëë€. ì ííë rectangle_x = 10곌 rectangle_y = 20ìŒë¡ 2ê°ì ë³ìì ê°ìŽ í ë¹ëê³ ê·ž ê°ì ì¶ë ¥í©ëë€. (6, 7íì print묞 ì€í)
ìž ë²ì§ž : print("ì¬ê°íì ëìŽ:", calculate_rectangle_area(rectangle_x, rectangle_y))륌 ìíí©ëë€. ìŽ ë¶ë¶ìì ììì ì ìíë íšì륌 ížì¶íê³ , rectangle_xì rectangle_y ë³ìì í ë¹ë ê°ìŽ calculate_rectangle_ area íšìì ì ë ¥ê°ìŽ ë©ëë€. ê·žë¬ë©Ž ìœë return x * yì ìíŽ ë°íê° 200ìŽ ë°íëìŽ 200ìŽ ì¶ë ¥ë©ëë€.
맀ê°ë³ìì ìžì 구ë¶íêž°
íšìì ì ë ¥ê°ì 맀ê°ë³ìë¡ êµ¬ë¶ëìŽ ì¬ì©í©ëë€. íšìì êŽë šíŽ ëª ê°ì§ ì©ìŽì ëí ìŽíŽê° íìíë°ì, ìì륌 íµíŽ ëíì ìž ë§€ê°ë³ì(parameter)ì ìžì(argument)ì ì°šìŽë¥Œ ìŽíŽíŽëŽ ìë€.
def f(x):
return 2 * x + 7
print(f(2))
11
맀ê°ë³ìë íšìì ìží°íìŽì€ ì ìì ììŽ ìŽë€ ë³ì륌 ì¬ì©íëì§ ì ìíë ê²ì ëë€. ìŠ, ì íšìììë xê° íŽë¹ íšìì 맀ê°ë³ìì ëë€.
ê·žì ë°íŽ ìžìë ì€ì 맀ê°ë³ìì ëì ëë ê°ì ë»í©ëë€. ì ìœëììë f(2)ìì 2ê° ìžìì íŽë¹í©ëë€.
íšìì íí
- 구ë¶
íšìë 맀ê°ë³ìì ë°íê°ì ì 묎ì ë°ëŒ ë€ ê°ì§ ííë¡ êµ¬ë¶í©ëë€.
ë°íê° & 맀ê°ë³ì ì 묎 맀ê°ë³ì ìì 맀ê°ë³ì ìì
ë°íê° ìì | íšì ëŽë¶ ëª ë ¹ë¬žë§ ìí | 맀ê°ë³ì륌 ì¬ì©íì¬ ëª ë ¹ë¬žë§ ìí |
ë°íê° ìì | 맀ê°ë³ì ììŽ ëª ë ¹ë¬žì ìíí í ê²°ê³Œê° ë°í | 맀ê°ë³ì륌 ì¬ì©íì¬ ëª ë ¹ë¬žì ìíí í ê²°ê³Œê° ë°í |
- ìì륌 íµíŽ ë¹êµíêž°
def a_rectangle_area(): # 맀ê°ë³ì x, ë°íê° x
print(5 * 7)
def b_rectangle_area(x, y): # 맀ê°ë³ì o, ë°íê° x
print(x * y)
def c_rectangle_area(): # 맀ê°ë³ì x, ë°íê° o
return(5 * 7)
def d_rectangle_area(x, y): # 맀ê°ë³ì o, ë°íê° o
return(x * y)
a_rectangle_area()
b_rectangle_area(5, 7)
print(c_rectangle_area())
print(d_rectangle_area(5, 7))
35
35
35
35
- 첫 ë²ì§ž íšì (맀ê°ë³ì x, ë°íê° x) : ìŽë 맀ê°ë³ìì ë°íê°ìŽ 몚ë ìë 겜ì°ì ëë€. ì ë ¥ê°ë ìê³ ë°íëë ê°ë ìì§ë§, print(5 * 7)ë¡ ìžíŽ 35ê° ì¶ë ¥ë©ëë€. ìŽ ê²œì°ìë a_rectangle_area()ê° 35ë¡ ì¹íëë ê²ìŽ ìëê³ , ë°íê°ìŽ ìêž° ë묞ì íšì ì첎ë noneê°ì ê°ì§ê² ë©ëë€. ëì ëŽë¶ íšììž print() íšìë¡ ìžíŽ 35ê° ì¶ë ¥ëë ê²ì ëë€.
- ë ë²ì§ž íšì (맀ê°ë³ì o, ë°íê° x) : ìŽë b_rectangle_area()ê° ë§€ê°ë³ìë¡ x, y륌 ë겚ë°ê³ , ê·ž ê°ì ê³ì°íì¬ íë©Žì ì¶ë ¥íë íšìì ëë€. ìŽ ìì ë°íê°ìŽ ììŒë¯ë¡ 11íìì b_rectangle_area(5, 7)ìŽëŒê³ ì€íììŒìŒ 35ê° ì¶ë ¥ëë ê²ìŽì§, b_rectangle_area(5, 7) ìì²Žê° 35ë¡ ì¹íëë ê²ì ìëëë€. ë°íìŽ ììŒë©Ž íŽë¹ íšìë noneìŒë¡ ì¹íëë ê²ì ëë€.
- ìž ë²ì§ž, ë€ ë²ì§ž íšì (맀ê°ë³ì x, ë°íê° o / 맀ê°ë³ì o, ë°íê° o) : ìŽë€ì 몚ë ë°íê°ìŽ ìë 겜ì°ì ëë€. c_rectangle_area()ì d_rectangle_ area() íšì 몚ë, íšì ììì print() íšì륌 ìíìí€ë ê²ìŽ ìëëŒ íšì륌 ížì¶í ë print() íšì륌 ìŽì©íë€ë ê²ì ì ì ììµëë€. ìŠ, ë íšì 몚ë return묞ìŒë¡ ìžíŽ 35ë¡ ì¹íëë ê²ì ëë€. ìŽë ê² returnìŽ ìë 겜ì°, ìŠ íšìì ë°íê°ìŽ ìë 겜ì°ìë ê·ž íšì륌 ížì¶ íë ê³³ìì íšìì ë°íê°ì ë³ìì í ë¹íì¬ ì¬ì©íë ê²ìŽ ê°ë¥í©ëë€.
- ìŽë ê² ëªšë 35ëŒë ê°ì ê°ì ì¶ë ¥íì§ë§,íšìì ííì ë°ëŒ ì¬ì©íë ë°©ë²ìŽ ë€ë¥Žë€ë ê²ì ì ì ììµëë€.
ðïž íšì ì¬í
íšìì ížì¶ ë°©ì
- ì íµì ìž íë¡ê·žëë°ìì íšìê° ë³ì륌 ížì¶íë ë°©ì
ì¢ ë¥ ì€ëª
ê°ì ìí ížì¶ | |
(call by value) | • íšìì ìžì륌 ëêžž ë ê°ë§ ëê¹ |
• íšì ëŽë¶ì ìžìê° ë³ê²œ ì ížì¶ë ë³ìì ìí¥ì ì£Œì§ ìì | |
ì°žì¡° ížì¶ | |
(call by reference) | • íšìì ìžì륌 ëêžž ë ë©ëªšëŠ¬ 죌ì륌 ëê¹ |
• íšì ëŽë¶ì ìžìê° ë³ê²œ ì ížì¶ë ë³ìê°ë ë³ê²œëš |
íì§ë§, íìŽì¬ì ì íµì ìž ë ê°ì§ ë°©ìì íŒí©í ì¡°êžì í¹ìŽí ë°©ìì ì¬ì©í©ëë€.
- íìŽì¬ìì íšìê° ë³ì륌 ížì¶íë ë°©ì
íìŽì¬ì ê°ì²Žì 죌ìê° íšìë¡ ëìŽê°ë€ë ë»ì ê°ì²Ž ížì¶(call by object reference) ë°©ìì ì¬ì©í©ëë€. íìŽì¬ììë ê°ì²Žì 죌ì륌 íšìë¡ ëêž°êž° ë묞ì ì ë¬ë ê°ì²Žì ê°ì ë³ê²œìŽ ìì 겜ì°, ìŠ ìë¡ìŽ ê°ì í ë¹íê±°ë íŽë¹ ê°ì²Žë¥Œ ì§ìž ëë ìí¥ì ì£Œì§ ìì§ë§ ëšìí íŽë¹ ê°ì²Žì ê°ì ì¶ê°í ëë ìí¥ì ì£Œê² ë©ëë€.
- ìì륌 íµíŽ ìŽíŽíêž°
def spam(eggs):
eggs.append(1) # êž°ì¡Ž ê°ì²Žì 죌ìê°ì [1] ì¶ê°
eggs = [2, 3] # ìë¡ìŽ ê°ì²Ž ìì±
ham = [0]
spam(ham)
print(ham)
[0, 1]
ì ìœëì ham곌 eggs, ë 늬ì€ížìì ë³ì륌 ì¬ì©í ê²ì 볎멎 ì¢ ë ëª íí ì ì ììµëë€. 5íë¶í° 볎ìë©Ž hamìŽëŒë 늬ì€ížë¥Œ ë§ë€ê³ , íšì spamì hamì ìžìë¡ ì ë ¥íììµëë€.
ìŽë, íšì ìììë ìŽëŠìŽ hamìì eggsë¡ ë°ëê² ë©ëë€. ham곌 eggsë íšìì ížì¶ ë°©ììŒë¡ ê°ì²Žë¥Œ ížì¶íê³ ììŒë¯ë¡ ê°ì 죌ì륌 ê³µì í©ëë€. ë°ëŒì 2íì eggs. append(1)ì ìíŽ íŽë¹ 늬ì€ížì 1ìŽ ì¶ê°ëë©Ž ham곌 eggsê° ëªšë ìí¥ì ë°ìµëë€. 3íììë eggs = [2, 3]ìŒë¡ ìë¡ìŽ 늬ì€ížë¥Œ ë§ë€ììµëë€. ê·žëì ë ìŽì ham곌 eggsê° ê°ì ë©ëªšëŠ¬ 죌ì륌 ê°ì§ ìê³ eggsë ìêž°ë§ì ë©ëªšëŠ¬ 죌ì륌 ê°ì§ê² ë©ëë€. ê·žëŠ¬ê³ íšì륌 ë¹ ì žëì 7íì print(ham)ìŽ ì€íëë©Ž, 2íì eggs.append(1)ì ìíŽ ì¶ê°ë [0, 1]ìŽ íë©Žì ì¶ë ¥ë©ëë€.
ìŽê²ìŽ ë°ë¡ **ê°ì²Ž ížì¶(call by object reference)**ìŽëŒë íìŽì¬ì íšì ëŽë¶ ë³ì ížì¶ ë°©ìì ëë€.
3ì°šì 조걎묞 곌ì ëµì
ë³ìì ì¬ì© ë²ì
- ì ì
ë³ìì ì¬ì© ë²ìë ë§ ê·žëë¡ ë³ìê° ìœëìì ì¬ì©ëë ë²ì륌 ë§íëë°, íí íšì ëŽë¶ìì ì¬ì©í ê²ìžì§, ëë íë¡ê·žëš ì 첎ìì ì¬ì©í ê²ìžì§ ê·ž ë²ì륌 ê²°ì íë ê·ì¹ì ë»í©ëë€.
- ì¢ ë¥
ìŒë°ì ìŒë¡ ë³ìì ì¬ì© ë²ì륌 ê²°ì í ë ê³ ë €íŽìŒ í ë ê°ì§ ë³ìê° ììµëë€.
• ì§ì ë³ì(local variable): íšì ëŽë¶ììë§ ì¬ì©
• ì ì ë³ì(global variable): íë¡ê·žëš ì 첎ìì ì¬ì©
- ì¬ì© ìì 1
def test(t):
print(x)
t = 20
print("In Function:", t)
x = 10
test(x)
print("In Main:", x)
print("In Main:", t)
10
In function: 20
In Main: 10
Traceback (most recent call last):
File "scoping_rule.py", line 9, in <module>
print("In Main:", t)
NameError: name 't' is not defined
ì¬êž°ì ì€ìí ê²ì ë³ì xì tì ëë€. íë¡ê·žëšìŽ ê°ì¥ 뚌ì ììëë ì§ì ì 6íì x = 10 ì ëë€. ê·žëŠ¬ê³ 7íìì xë test(x) íšìì ìžìë¡ ëìŽê°ê² ë©ëë€. ê·žë ë€ë©Ž íšì ëŽë¶ìì ì²ì ë§ëë 2í print(x)ì xë ìŽë€ ë³ììŒê¹ì?
ìŽëì xë íšì ëŽë¶ìì ì¬ì ìëì§ ìììŒë¯ë¡ íšì륌 ížì¶í ë©ìž íë¡ê·žëšìì ì ìí x = 10ì x륌 ë»í©ëë€. ìŠ, íë¡ê·žëš ì 첎ìì ì¬ì©í ì ìë ì ì ë³ìì ëë€.
íšì ëŽë¶ì ìë të ìŽëšê¹ì? test(x) íšìì x륌 të¡ ì¹ííì¬ ì¬ì©í©ëë€. ìŠ, íšì ëŽë¶ììë x륌 ë°ë¡ ì ìží ì ì ìê³ , t륌 ì ìžíì¬ ì¬ì©í©ëë€. ê·žëŠ¬ê³ 3íì t = 20ì ìíŽ tì 20ìŽ í ë¹ëê³ , 4í print(”In Function:", t)ì ê²°ê³Œë¡ In Function: 20ìŽ ì¶ë ¥ë©ëë€.
íì§ë§ íšìê° ì¢ ë£ëê³ ìœëì 9íì print(”In Main:", t)ê° ì€íëë©Ž ì€ë¥ê° ì¶ë ¥ëëë°ì. ìëíë©Ž tê° íšì ëŽë¶ììë§ ì¬ì©í ì ìë ì§ì ë³ììŽêž° ë묞ì ëë€. ê·žëì ë©ìž íšììì t ë³ì륌 ížì¶íë ê²ì ë¶ê°ë¥í©ëë€.
- ì¬ì© ìì 2
def f():
s = "I love London!"
print(s)
s = "I love Paris!"
f()
print(s)
I love London!
I love Paris!
ìŽ ìììì ë³ì së f( ) íšìì ëŽë¶ììë ì¬ì©ëê³ ìžë¶ììë ì¬ì©ë©ëë€. sì ê°ì ìŽë»ê² ë°ëê¹ì?
íë¡ê·žëšìŽ ììëìë§ì sìë ‘I love Paris!’ ê°ìŽ í ë¹ë©ëë€. íì§ë§ ê·ž í íšì ëŽë¶ë¡ ìœëì ì€íìŽ ì®ê²šê° ë€ì sì ‘I love London!’ ê°ìŽ ì ì¥ëê³ , ê·ž ê°ìŽ 뚌ì ì¶ë ¥ë©ëë€.
ê·žë ë€ë©Ž íšì ìžë¶ì ìë ë³ì sì ê°ì ë³ê²œìŽ ëììê¹ì? íšìê° ì¢ ë£ë í 7í print(s)ì ì€í ê²°ê³Œë ‘I love Paris!’ì ëë€. ë°ëì§ ììëë°ì.
ìŽë íšì ëŽë¶ì ìžë¶ì ìë ë³ì së ê°ì ìŽëŠì ê°ì¡ì§ë§ ì¬ì€ ë€ë¥ž ë©ëªšëŠ¬ 죌ì륌 ê°ê³ ìë ì í ë€ë¥ž ë³ììŽêž° ë묞ì ëë€. ë°ëŒì íšì ëŽë¶ì së íŽë¹ íšìê° ì€íëë ëììë§ ë©ëªšëŠ¬ì ìë€ê° íšìê° ì¢ ë£ëë ìê° ì¬ëŒì§ë ê²ì ëë€. ë¹ì°í íšì ìžë¶ì sìë ë©ëªšëŠ¬ 죌ìê° ë¬ëŒ ìë¡ ìí¥ì ì£Œì§ ìëë€. ìŠ, ë³ìì ìŽëŠìŽ ê°ë€ê³ ë€ ê°ì íšìê° ìëëŒë ë»ìŽì£ ?
- ì¬ì© ìì 3 (global ì¬ì©íêž°)
íšì ëŽë¶ì ë³ìì íšì ìžë¶ì ë³ìê° ê°ì ë©ëªšëŠ¬ 죌ì륌 ê°ë ê°ì ë³ì륌 ì¬ì©íêž° ìíŽìë ìŽë»ê² íŽìŒ í ê¹ì?
ì ì ë³ìë¡ ì ìžíë©Ž ë©ëë€. íšì ëŽìì ë³ì륌 ì ì ë³ìë¡ ì ìžíêž° ìíŽìë íìŽì¬ìì ì ê³µíë global í€ìë륌 ì¬ì©í©ëë€.
def f():
global s
s ="I love London!"
print(s)
s = "I love Paris!"
f()
print(s)
I love London!
I love London!
ìì ì¬ì© ìì 2 ìœëìì ë³ê²œë ê²ì íšì ëŽë¶ìì 2íì global s ìœë ì ëë€. ìŽ ìœëì 결곌ë ìŽì 곌 ë€ë¥Žê² ì¶ë ¥ëëë°ì. ê·ž ìŽì 륌 ìŽíŽëŽ ìë€.
êž°ì¡Žì sìë ‘I love Paris!’ê° ì ì¥ëìŽ ìëë°. f( ) íšì ëŽë¶ì ìœëê° ìíëë ìê° global sê° ì ìžëìŽ íšì ìžë¶ì s, ìŠ ì ì ë³ì sì ë©ëªšëŠ¬ 죌ì륌 ì¬ì©íê² ë©ëë€. ê·žëì ìŽì 곌 ë¬ëŠ¬ íšì ëŽë¶ì ìžë¶ì ìë së ê°ì ë©ëªšëŠ¬ 죌ì륌 ì¬ì©íê² ë©ëë€. ë°ëŒì íŽë¹ ë©ëªšëŠ¬ 죌ìì ìë¡ìŽ ê°ìž ‘I love London!’ìŽ í ë¹ëë©Ž íšì ìžë¶ì së íŽë¹ ê°ìŽ í ë¹ëìŽ ìì ê°ì ê²°ê³Œê° ì¶ë ¥ëë ê²ì ëë€.
ì¬ê· íšì
- ì ì
ì¬ê· íšì(recursive function)ë ìêž° ìì ì ë€ì ížì¶íë íšìì ëë€. ì¬ê·ì ìŽëŒë ííì ìì ì ìŽì©íŽ ë€ë¥ž ê²ì ì ìíë€ë ë»ìŽì£ . ì¬ê· íšìë ìíì ì íì곌 ê°ì ííì ëë€.
- ìì
ì ìììŽ í©í ëŠ¬ìŒ íšìì ëë€. ì ííë 'n!'ìŒë¡ íìíê³ n! = n x (n - 1)ë¡ ì ìží ì ììµëë€. ìì ì ì«ììì 1ì© ë¹Œë©Žì ê³±íë íììŽë©° 볎íµì ì íììŽëŒê³ í©ëë€.
ìŽë¬í ííì ììì ìœëë¡ íííë©Ž ë€ì곌 ê°ìµëë€. (ì¬ì©ìê° 5 ì ë ¥)
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(int(input("Input Number for Factorial Calculation: "))))
Input Number for Factorial Calculation: 5
120
ì ìœëìì factorial() íšìë nìŽëŒë ë³ì륌 ì ë ¥ 맀ê°ë³ìë¡ ë겚ë°ì í n == 1ìŽ ìë ëê¹ì§ ì ë ¥ë n곌 nìì 1ì ëº ê°ì ì ë ¥ê°ìŒë¡ ë€ì factorial() íšì륌 ížì¶íì¬ ë°íë ê°ê³Œ ê³±í©ëë€.
ë§ìœ ì²ì ì¬ì©ìê° 5륌 ì ë ¥íë€ë©Ž ë€ì곌 ê°ì ììëë¡ ê³ì°ë ê²ì ëë€.
5 * factorial(5 - 1) = 5 * 4 * factorial(4 - 1) = 5 * 4 * 3 * factorial(3 - 1) = 5 * 4 * 3 * 2 * factorial(2 - 1) = 5 * 4 * 3 * 2 * 1
ðïž íšìì ìžì
íìŽì¬ìì ìžì륌 ì¬ì©íë ë°©ë²
íìŽì¬ììë ë€ìí ë°©ììŒë¡ ìžìì ì¬ì© ë°©ë²ì ì§ìí©ëë€.
ì¢ ë¥ ëŽì©
í€ìë ìžì | íšìì ìží°íìŽì€ìì ì§ì í ë³ìëª ì ì¬ì©íì¬ íšìì ìžì륌 ì§ì íë ë°©ë² |
ëíŽíž ìžì | ë³ëì ìžìê°ìŽ ì ë ¥ëì§ ìì ë ìží°íìŽì€ ì ìžìì ì§ì í ìŽê¹ê°ì ì¬ì©íë ë°©ë² |
ê°ë³ ìžì | íšìì ìží°íìŽì€ìì ì§ì í ë³ì ìŽìžì ì¶ê° ë³ì륌 íšìì ì ë ¥í ì ìëë¡ ì§ìíë ë°©ë² |
í€ìë ê°ë³ ìžì | 맀ê°ë³ìì ìŽëŠì ë°ë¡ ì§ì íì§ ìê³ ì ë ¥íë ë°©ë² |
í€ìë ìžì
- ëŽì©
í€ìë ìžìë íšìì ì ë ¥ëë 맀ê°ë³ìì ë³ìëª ì ì¬ì©íì¬ íšìì ìžì륌 ì§ì íë ë°©ë²ì ëë€.
- ìì
def print_something(my name, your name):
print("Hello {0}, My name is {1}".format(your _name, my_name))
print_something("Sungchul", "TEAMLAB")
print_something(your_name = "TEAMLAB", my_name = "Sungchul")
Hello TEAMLAB, My name is Sungchul
Hello TEAMLAB, My name is Sungchul
ì ìœëìì print_ something() íšìë (my_name, your_name)ìŽëŒë ì ë ¥ ìží°íìŽì€ë¥Œ ê°ì§ê² ë©ëë€. ìŒë°ì ìŒë¡ íšì륌 ížì¶í ë ìžìê° ììëë¡ ì ë ¥ëëë¡ ìœë륌 ìì±íŽìŒ íëë°ì. ë°ëŒì 4íì print_something("Sungchul", "TEAMLAB")ìì ‘Sungchul’ì my_ name ì, 'TEAMLAB'ì your_nameì í ë¹ë©ëë€.
íì§ë§ íšìì ì ë ¥ ë³ìëª ë§ ì íí êž°ì¬ëë€ë©Ž, ììì ìêŽììŽ ìíë ë³ìì ìžì륌 ë£ì ìë ììµëë€. 5íì print_something(your_ name = “TEAMLAB”, my_name = “Sungchul")ì 볎멎 íšìì ìžììì ì¬ì©ëë ê°ê°ì ë³ìëª ì ëª ìíšìŒë¡ìš íŽë¹ ë³ìì ê°ìŽ í ë¹ë ì ìëë¡ ì²ëŠ¬íììµëë€. ìŠ ì ë ¥ëë ììì ìêŽììŽ ‘Sungchul'ì my nameìŒë¡, 'TEAMLAB'ì your nameìŒë¡ í ë¹ëë ê²ì ëë€.
ë°ëŒì ë íšìì ëí 2ê°ì§ ížì¶ ìœëì ì€í ê²°ê³Œê° ëìŒíê² ì¶ë ¥ë©ëë€.
ëíŽíž ìžì
- ëŽì©
ëíŽíž ìžìë 맀ê°ë³ìì Ʞ볞ê°ì ì§ì íì¬ ì¬ì©íê³ , ìë¬Žë° ê°ë ìžìë¡ ëìŽê°ì§ ìì ë ì§ì ë Ʞ볞ê°ì ì¬ì©íë ë°©ë²ì ëë€.
- ìì
def print_something_2(my name, your name = "TEAMLAB"):
print("Hello {0}, My name is {1}".format (your_name, my_name))
print_something_2("Sungchul", "TEAMLAB")
print_something_2("Sungchul")
Hello TEAMLAB, My name is Sungchul
Hello TEAMLAB, My name is Sungchul
1íì 볎멎 def print_something_2(my_name, your_name = "TEAMLAB")ìì íšìì ìží°íìŽì€ë¥Œ ì ìíìëë°. your_name 맀ê°ë³ììë Ʞ볞ê°ìŒë¡ ‘TEAMLAB’ìŽ ì§ì ë ê²ì í ìží ì ììµëë€. ë°ëŒì ìŽ ê²œì°ìë, íšì륌 ížì¶í ë your_name 맀ê°ë³ìì ë³ëì ê°ì í ë¹íì§ ììë íšìê° ìëí©ëë€.
5íì print_something_2("Sungchul")ìì íšìì 맀ê°ë³ìê° 2ê°ìžë°ë ìžì륌 íëë§ ì ë ¥íììµëë€. ìŽ ê²œì° ì ë ¥ë ê°ì 첫 ë²ì§ž 맀ê°ë³ììž my_nameì í ë¹ëê³ , ë ë²ì§ž 맀ê°ë³ììž your_nameìë ëíŽíž ìžìë¡ ì§ì ë ‘TEAMLAB’ìŽ í ë¹ëë ê²ì ëë€. ê²°êµ 4í곌 5íì ìœë륌 몚ë ì€ííë©Ž ë ìœëì 결곌ë ê°ìµëë€.
ê°ë³ ìžì
- ëŽì©
ìœë륌 ìì±í ë, ê°ë íšìì 맀ê°ë³ì ê°ì륌 ì íì§ ìììŒ íë 겜ì°ê° ììµëë€. ì륌 ë€ìŽ, íì ê°ìê° ì íŽì§ì§ ìì ë€í ë°©ì ìì ë§ì ì°ì°ìŽëŒë ê°, ê³ ê°ìŽ 묌걎ì ìŒë§ë 구맀í ì§ ëªšë¥Žë ë§íž ê³ì°êž°ìì í©ì°ì ìííë ì°ì° ë±ìŽ ê·ž ìê² ì£ ? ìŽë° 겜ì°ì ì¬ì©íë ê²ìŽ ë°ë¡ ê°ë³ ìžìì ëë€.
ê°ë³ ìžìë *(asteriskëŒê³ ë¶ëŠ)ë¡ ííí ì ìëë°, *ì íìŽì¬ìì Ʞ볞ì ìŒë¡ ê³±ì ëë ì ê³± ì°ì° ìžìë ë³ì륌 묶ìŽì£Œë ê°ë³ ìžì륌 ë§ë€ ë ì¬ì©í©ëë€. ê°ë³ ìžìë íí ìë£íìŒë¡ ì¬ì©ë©ëë€.
- ìì
def asterisk_test(a, b, *args):
return a + b + sum(args)
print(asterisk_test(l, 2, 3, 4, 5))
15
ì ìœëì asterisk_test() íšìë ë³ì a, b륌 ë겚ë°ê³ , ëëšžì§ë¥Œ *argsë¡ ë겚ë°ê³ ììµëë€. ì¬êž°ì args륌 ê°ë³ ìžìëŒê³ í©ëë€.
4íì asterisk_test(1, 2, 3, 4, 5)륌 볎멎 1곌 2ë ê°ê° aì bì í ë¹ëê³ , ëëšžì§ ìžììž 3, 4, 5ê° ëªšë *argsì í ë¹ëìŽ 15ê° ì¶ë ¥ëë ê²ì ëë€.
í€ìë ê°ë³ ìžì
- ëŽì©
ê°ë³ ìžìë ë³ìì ììëë¡ íí ííë¡ ì ì¥ë©ëë€. ìŽë¥Œ ì¬ì©í ëë ë§€ì° ê°ëšíì§ë§ ë³ìì ìŽëŠì ì§ì í ì ìë€ë ëšì ìŽ ììµëë€. ìŽë¬í ëšì ì 볎ìíë ë°©ë²ìŽ ë°ë¡ í€ìë ê°ë³ ìžìì ëë€.
ìŽ ë°©ë²ì 맀ê°ë³ìì ìŽëŠì ë°ë¡ ì§ì íì§ ìê³ ì ë ¥íë ë°©ë²ìŒë¡ ìŽì ê°ë³ ìžììë ë¬ëŠ¬ *ì 2ê° ì¬ì©íì¬ íšìì 맀ê°ë³ì륌 íìí©ëë€. ê·žëŠ¬ê³ ì ë ¥ë ê°ì íí ìë£íìŽ ìë ëì ë늬 ìë£íìŒë¡ ì¬ì©í©ëë€.
- ìì
def kwargs_test(**kwargs):
print(kwargs)
print("First value is {first}".format(**kwargs))
print("Second value is {second}".format(**kwargs))
print("Third value is {third}".format(**kwargs))
kwargs_test(first =3, second =4, third = 5)
{'first': 3, 'second': 4, 'third': 5}
First value is 3
Second value is 4
Third value is 5
í€ìë ê°ë³ ìžìë ë³ìëª ìŒë¡ kwargs륌 ì¬ì©í©ëë€. ì¬ì€ ë³ìëª ì첎ë ì€ìíì§ ìì§ë§, * ë ë°ëì **ì²ëŒ 2ê°ë¥Œ ë¶ì¬ìŒ íë€ë ê²ì êž°ìµíŽì£Œìžì!
7íìì 3ê°ì í€ìë ìžì륌 ë게ìŒë¯ë¡ 2íì print() íšììì ê·ž ìžìë€ìŽ {'first': 3, 'second': 4, 'third': 5}íí, ìŠ ë³ìëª ê³Œ ê°ìŽ ììŒë¡ ì§ì ë ëì ë늬 ííë¡ ì¶ë ¥ëë ê²ì íìží ì ììµëë€.
í€ìë ê°ë³ ìžì륌 ì¬ì©íì¬ ‘first = 3, second = 4, third = 5’ì ê°ìŽ ë³ì륌 íšì ìì ë£ì ê²ì ëë€.
'ð ì€í°ë > íìŽì¬ ì€í°ë ê°ììë£' 칎í ê³ ëŠ¬ì ë€ë¥ž êž
[4í/ê¹ë¯Œí] 4ì°šì íìŽì¬ ì€í°ë - ë°ë³µë¬ž (0) | 2023.04.05 |
---|---|
[3í/ê¹ê·ëŠ¬] 5ì°šì íìŽì¬ ì€í°ë - íšì (0) | 2023.04.03 |
[1í/íìì] 4ì°šì íìŽì¬ ì€í°ë - ë°ë³µë¬ž (0) | 2023.03.30 |
[2í/ê¹ê°ëŠŒ, ìµë€ì] 4ì°šì íìŽì¬ ì€í°ë - ë°ë³µë¬ž (0) | 2023.03.30 |
[1í/íê·ëŠŒ] 4ì°šì íìŽì¬ ì€í°ë - ë°ë³µë¬ž (0) | 2023.03.30 |