๐Ÿ“š ์Šคํ„ฐ๋””/ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” ๊ฐ•์˜์ž๋ฃŒ

[4ํŒ€/๊น€๋ฏผํ˜œ] 5์ฐจ์‹œ ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” - ํ•จ์ˆ˜

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2023. 4. 13. 00:00

5แ„Žแ…กแ„‰แ…ต_แ„’แ…กแ†ทแ„‰แ…ฎ_แ„’แ…ขแ„ƒแ…กแ†ธ.pdf
0.10MB
5แ„Žแ…กแ„‰แ…ต_แ„’แ…กแ†ทแ„‰แ…ฎ_แ„€แ…กแ†ผแ„‹แ…ดแ„‹แ…กแ†ซ.pdf
0.48MB
5แ„Žแ…กแ„‰แ…ต_แ„’แ…กแ†ทแ„‰แ…ฎ_แ„€แ…ชแ„Œแ…ฆ.pdf
0.23MB

1. ํ•จ์ˆ˜ - ๊ธฐ์ดˆ


๊ฐœ๋…

DEF) ์–ด๋–ค ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ์˜ ๋ฉ์–ด๋ฆฌ, ๋˜๋Š” ์ฝ”๋“œ์˜ ๋ฌถ์Œ

  • ์žฅ์ 
    1. ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
      • ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—…๋ฌด๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์ž‘์„ฑํ•ด ๋†“์•„๋„ ๋จ
      • ⇒ ์ฝ”๋“œ ์ˆ˜์ • ์‹œ ๊ฐ™์€ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์ !
    2. ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ๋ถ„ํ• ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
      • ๊ฐ„๋‹จํžˆ ๋„ํ˜•์„ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋”๋ผ๋„ ๊ณฑ์…ˆ ์ฝ”๋“œ, ๋ง์…ˆ ์ฝ”๋“œ, ๋‚˜๋ˆ—์…ˆ ์ฝ”๋“œ ๋“ฑ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ
    3. ์ฝ”๋“œ์˜ ์บก์Šํ™”
      • ํ•จ์ˆ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ž˜ ์ •์˜ํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
        • ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ •์˜ = ์ž…๋ ฅ๊ฐ’(input)๊ณผ ์ถœ๋ ฅ๊ฐ’(output)์„ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ๊ฒƒ
        • ์ฝ”๋“œ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ๋„ ํ•จ์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

ํ•จ์ˆ˜ ์„ ์–ธ๊ณผ ์‹คํ–‰

def ํ•จ์ˆ˜์ด๋ฆ„ (๋งค๊ฐœ๋ณ€์ˆ˜ #1 ...):
		๋ช…๋ น๋ฌธ1
		๋ช…๋ น๋ฌธ2
		return <๋ฐ˜ํ™˜๊ฐ’>
  • ์ฝ”๋“œ์„ค๋ช…
    • def: ‘definition’์˜ ์ค„์ž„๋ง. ํ•จ์ˆ˜์˜ ์ •์˜๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ์˜๋ฏธ. ํ•จ์ˆ˜์˜ ์„ ์–ธ ๋ถ€๋ถ„์€ ์ฝ”๋“œ์˜ ์ฒ˜์Œ์— ์ž…๋ ฅํ•ด์•ผ ํ•จ.
    • ํ•จ์ˆ˜์ด๋ฆ„: ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋น„์Šทํ•˜๋‹ค
      • ์†Œ๋ฌธ์ž ์ž…๋ ฅ
      • ๋„์–ด์“ฐ๊ธฐ์˜ ๊ฒฝ์šฐ ‘_’ ์‚ฌ์šฉ ex) save_model
      • ๋™์‚ฌ์™€ ๋ช…์‚ฌ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Œ ex) find_number
      • ์งง๊ณ  ๋ช…๋ฃŒํ•œ ์ด๋ฆ„
    • ๋งค๊ฐœ๋ณ€์ˆ˜(parameter): ํ•จ์ˆ˜์—์„œ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜. 1๊ฐœ ์ด์ƒ์˜ ๊ฐ’์„ ์ ์„ ์ˆ˜ ์žˆ์Œ.
    • ๋ช…๋ น๋ฌธ: ๋ฐ˜๋“œ์‹œ ๋“ค์—ฌ์“ฐ๊ธฐ ํ•œ ํ›„ ์ž…๋ ฅ ํ•„์š”. if๋‚˜ for๋ฌธ ๋“ฑ์˜ ์ œ์–ด๋ฌธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • example
def calculate_rectangle_area(x,y)
		return x*y

1) ํ•จ์ˆ˜์ด๋ฆ„: calculate_rectangle_area

2) ๋งค๊ฐœ๋ณ€์ˆ˜: x, y

3) return: ๊ฐ’์„ ๋ฐ˜ํ™˜ = x์™€ y๋ฅผ ๊ณฑํ•œ ๊ฐ’

  • ํ•จ์ˆ˜์ด๋ฆ„
    • ๋‚ด์šฉ์€ ๊ฐ€๋Šฅํ•˜๋ฉด ์งง๊ฒŒ
    • ์ด๋ฆ„์— ํ•จ์ˆ˜์˜ ์—ญํ• ๊ณผ ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ
  • ์—ญํ• 
    • ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์—๋Š” ์œ ์‚ฌํ•œ ์—ญํ• ์„ ํ•˜๋Š” ์ฝ”๋“œ๋งŒ ํฌํ•จ
    • ์ตœ์†Œํ•œ์˜ ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ
  • ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
    1. ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜
    2. ๋ณต์žกํ•œ ๋กœ์ง์ด ์‚ฌ์šฉ๋˜์—ˆ์„ ๋•Œ ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜
      • ๋ณต์žกํ•œ ์กฐ๊ฑด์ด๋‚˜ ์ˆ˜์‹์„ ์‚ฌ์šฉํ•  ๋•Œ
  • ์‹คํ–‰์ˆœ์„œ
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))

<์ฝ”๋“œ ์„ค๋ช…>

1. ๋จผ์ € ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋œ def ๋ถ€๋ถ„์€ ์‹คํ–‰X. ๋ณ„๋„์˜ ์ถœ๋ ฅ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์Œ.

2. ํ•จ์ˆ˜๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ช…๋ น์˜ ์‹คํ–‰. ์œ„์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ print๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ ๋’ค, return x*y์— ์˜ํ•ด ๋ฐ˜ํ™˜๊ฐ’ 200์ด ๋ฐ˜ํ™˜๋จ.

3. calculate_rectangle_area(rectangle_x, rectangle_y)์ด 200์œผ๋กœ ์น˜ํ™˜๋˜๊ณ , ์ด๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•จ.

 

์šฉ์–ด

  • ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)
    : ์œ„ ์ฝ”๋“œ์—์„œ ๊ด„ํ˜ธ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” x, y ๋“ฑ
    • ํ•จ์ˆ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜์— ์žˆ์–ด ์–ด๋–ค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ •์˜ํ•˜๋Š” ๊ฒƒ
  • ์ธ์ˆ˜(argument)
    : ์‹ค์ œ ๋ณ€์ˆ˜์— ๋Œ€์ž…๋˜๋Š” ๊ฐ’

โž• ์‹ค์ œ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ธ์ˆ˜๋Š” ๊ตฌ๋ถ„ ์—†์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ณ , ๋ชจ๋‘ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ

 

ํ•จ์ˆ˜์˜ ํ˜•ํƒœ

  ๋งค๊ฐœ๋ณ€์ˆ˜ X ๋งค๊ฐœ๋ณ€์ˆ˜ O
๋ฐ˜ํ™˜๊ฐ’ X ํ•จ์ˆ˜ ๋‚ด๋ถ€ ๋ช…๋ น๋ฌธ๋งŒ ์ˆ˜ํ–‰ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ช…๋ น๋ฌธ๋งŒ ์ˆ˜ํ–‰
๋ฐ˜ํ™˜๊ฐ’ O ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์ด ๋ช…๋ น๋ฌธ ์ˆ˜ํ–‰ ํ›„, ๊ฒฐ๊ณผ๊ฐ’ ๋ฐ˜ํ™˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰ ํ›„, ๊ฒฐ๊ณผ๊ฐ’ ๋ฐ˜ํ™˜
#case1
def a_rectangle_area():     #๋งค๊ฐœ๋ณ€์ˆ˜x, ๋ฐ˜ํ™˜๊ฐ’x
		print(5 * 7)
a_rectangle_area()

#case2
def b_rectangle_area(x,y):  #๋งค๊ฐœ๋ณ€์ˆ˜o, ๋ฐ˜ํ™˜๊ฐ’x
		print(5 * 7)
b_rectangle_area(5,7)

#case3
def c_rectangle_area():     #๋งค๊ฐœ๋ณ€์ˆ˜x, ๋ฐ˜ํ™˜๊ฐ’o
		return(5 * 7)
print(c_rectangle_area())

#case4
def d_rectangle_area(x,y):     #๋งค๊ฐœ๋ณ€์ˆ˜o, ๋ฐ˜ํ™˜๊ฐ’o
		return(5 * 7)
print(d_rectangle_area(5,7))
  • case1
    • ์ž…๋ ฅ๊ฐ’, ๋ฐ˜ํ™˜๊ฐ’ ๋ชจ๋‘ X
    • print(5*7)๋กœ ์ธํ•ด 35 ์ถœ๋ ฅ
    • a_rectangle_area()๋Š” ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ ํ•จ์ˆ˜ ์ž์ฒด์˜ ๊ฐ’์€ none
  • case2
    • ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋‚˜ ๋ฐ˜ํ™˜๊ฐ’์€ X
    • b_rectangle_area(5, 7) ์ž์ฒด๊ฐ€ 35๋กœ ์น˜ํ™˜๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜!
    • ๋ฐ˜ํ™˜์ด ์—†๋‹ค๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋Š” none์œผ๋กœ ์น˜ํ™˜
  • case3, case4
    • ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ์Œ
    • ๋‘ ํ•จ์ˆ˜ ๋ชจ๋‘ return๋ฌธ์œผ๋กœ ์ธํ•ด 35๋กœ ์น˜ํ™˜๋จ
    • ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณณ์—์„œ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ

 

2. ํ•จ์ˆ˜ - ์‹ฌํ™”


ํ˜ธ์ถœ๋ฐฉ์‹

def f(x):
		y=x
		x=5
		return y*y

x=3
print(f(x))
print(x)
  • ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ call by value
    • ํ•จ์ˆ˜์— ์ธ์ˆ˜๋ฅผ ๋„˜๊ธธ ๋•Œ ๊ฐ’๋งŒ ๋„˜๊น€
    • ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ธ์ˆ˜๊ฐ’ ๋ณ€๊ฒฝ ์‹œ ํ˜ธ์ถœ๋œ ๋ณ€์ˆ˜์— ์˜ํ–ฅ X
  • ์ฐธ์กฐ ํ˜ธ์ถœ call by reference
    • ํ•จ์ˆ˜์— ์ธ์ˆ˜๋ฅผ ๋„˜๊ธธ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋„˜๊น€
      • ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„ ์ž์ฒด์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๊ทธ ๊ณต๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ๋ณ€์ˆ˜์—๋„ ์˜ํ–ฅ์„ ์คŒ
    • ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ธ์ˆ˜๊ฐ’ ๋ณ€๊ฒฝ ์‹œ ํ˜ธ์ถœ๋œ ๋ณ€์ˆ˜๊ฐ’๋„ ๋ณ€๊ฒฝ

ํŒŒ์ด์ฌ: ๊ฐ์ฒด ํ˜ธ์ถœ call by object reference

  • ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ํ•จ์ˆ˜๋กœ ๋„˜๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ์ „๋‹ฌ๋œ ๊ฐ์ฒด์— 1) ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ 2) ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ง€์šธ ๋•Œ๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ
  • But, ๋‹จ์ˆœํžˆ ํ•ด๋‹น ๊ฐ์ฒด์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” ์˜ํ–ฅ์„ ์คŒ
def spam(eggs):
		eggs.append(1)  #๊ธฐ์กด ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์— [1] ์ถ”๊ฐ€
		eggs = [2,3]    #์ƒˆ๋กœ์šด ๊ฐ์ฒด ์ƒ์„ฑ

ham = [0]
spam(ham)
print(ham)

- ๋จผ์ € ham์ด๋ผ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ํ•จ์ˆ˜ spam์— ham์„ ์ธ์ˆ˜๋กœ ์ž…๋ ฅ

- ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ด๋ฆ„์€ eggs (์ด๋•Œ, ham๊ณผ eggs๋Š” ๊ฐ์ฒด ํ˜ธ์ถœ ๋ฐฉ์‹์— ์˜ํ•ด ๊ฐ™์€ ์ฃผ์†Œ๋ฅผ ๊ณต์œ )

- eggs.append(1)์—์„œ๋Š” ham, eggs ๋ชจ๋‘ ์˜ํ–ฅ์„ ๋ฐ›์Œ

- eggs=[2,3]์„ ํ†ตํ•ด ๋” ์ด์ƒ ham๊ณผ eggs๋Š” ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š์Œ

- ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜๋ฅผ ๋น ์ ธ๋‚˜์™€ print(ham) ์‹คํ–‰์‹œ ์ถ”๊ฐ€๋œ [0,1]์„ ์ถœ๋ ฅ

  • ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ธฐ์กด์— ๋„˜์–ด์˜จ ์ธ์ˆ˜ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

 

๋ณ€์ˆ˜ ์‚ฌ์šฉ๋ฒ”์œ„ scoping rule

DEF) ๋ณ€์ˆ˜๊ฐ€ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ”์œ„

  • ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€, ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ
def test(t):
		print(x)
		t=20  #์ง€์—ญ๋ณ€์ˆ˜
		print("In Function:", t)

x=10  #์ „์—ญ๋ณ€์ˆ˜
test(x)
print("In Main:", x)
print("In Main:", t)

*์‹คํ–‰ํ–ˆ์„ ๊ฒฝ์šฐ print(”In Main:”, t)๋Š” ์˜ค๋ฅ˜ ์ถœ๋ ฅ. (๋ณ€์ˆ˜ t๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜.)

  • ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ณ€์ˆ˜
    • ์ง€์—ญ ๋ณ€์ˆ˜ local variable: ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉ
    • ์ „์—ญ ๋ณ€์ˆ˜ global variable: ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ์‚ฌ์šฉ
      • ํ•จ์ˆ˜ ๋‚ด๋ถ€์™€ ์™ธ๋ถ€์˜ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ–๋„๋ก ํ•จ
      • global ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ
def f():
		global s
		s = "I love London!"
		print(s)

s="I love Paris!"
f()
print(s)
  • ์˜ˆ์‹œ - ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•ด๋ด…์‹œ๋‹ค
#Example1

def f():
		s="I love London!"
		print(s)

s="I love Paris!"
f()
print(s)
  • ํ•จ์ˆ˜ ๋‚ด๋ถ€์™€ ์™ธ๋ถ€์— ์žˆ๋Š” ๋ณ€์ˆ˜ s๋Š” ์ด๋ฆ„์ด ๊ฐ™์ง€๋งŒ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ ๋ณ€์ˆ˜
  • ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ s๋Š” ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ์—๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋‹ค๊ฐ€ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง.
#Example2

def calculate(x,y):
		total=x+y      #์ƒˆ๋กœ์šด ๊ฐ’ ํ• ๋‹น์œผ๋กœ ํ•จ์ˆ˜ ๋‚ด๋ถ€ total์€ ์ง€์—ญ ๋ณ€์ˆ˜
		print("In Function")
		print("a:",str(a),"b:",str(b),"a+b:",str(a+b),"total:",str(total))
		return total

a=5  #a,b๋Š” ์ „์—ญ ๋ณ€์ˆ˜
b=7
total=0  #์ „์—ญ ๋ณ€์ˆ˜ total
print("In Program-1")
print("a:",str(a),"b:",str(b),"a+b:",str(a+b))

sum=calculate(a,b)
print("After Calculation")
print("Total:", str(total), "Sum:", str(sum)) #์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜์— ์˜ํ–ฅ ์ฃผ์ง€ ์•Š์Œ

#์ถœ๋ ฅ๊ฒฐ๊ณผ
In Program-1
a:5 b:7 a+b:12 total:12
After Calculation
Total:0 Sum:12

 

์žฌ๊ท€ํ•จ์ˆ˜ recursive function

DEF) ์ž๊ธฐ ์ž์‹ ์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜

  • ์ž์‹ ์„ ์ด์šฉํ•ด ๋‹ค๋ฅธ ๊ฒƒ์„ ์ •์˜ํ•œ๋‹ค๋Š” ์˜๋ฏธ
  • ์˜ˆ) ์ ํ™”์‹_ํŒฉํ† ๋ฆฌ์–ผfactorial ํ•จ์ˆ˜
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
  • ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ฐ€ ์ข…๋ฃŒ ์กฐ๊ฑด, ๋‹จ๊ณ„๋ณ„ ๋ฐ˜ํ™˜์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํฌ๊ฒŒ ๋ณ€๊ฒฝ ์—†์ด๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

 

3. ์ธ์ˆ˜ argument


์ธ์ˆ˜ ์‚ฌ์šฉ๋ฒ•

์ข…๋ฅ˜ ๋‚ด์šฉ

์ข…๋ฅ˜ ๋‚ด์šฉ
ํ‚ค์›Œ๋“œ ์ธ์ˆ˜ ํ•จ์ˆ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ง€์ •ํ•œ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
๋””ํดํŠธ ์ธ์ˆ˜ ๋ณ„๋„์˜ ์ธ์ˆ˜๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ์•Š์„ ๋•Œ ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ์—์„œ ์ง€์ •ํ•œ ์ดˆ๊นƒ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
๊ฐ€๋ณ€ ์ธ์ˆ˜ ํ•จ์ˆ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ง€์ •ํ•œ ๋ณ€์ˆ˜ ์ด์™ธ์˜ ์ถ”๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•
ํ‚ค์›Œ๋“œ ๊ฐ€๋ณ€ ์ธ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•

 

ํ‚ค์›Œ๋“œ ์ธ์ˆ˜ keyword arguments

DEF) ํ•จ์ˆ˜์— ์ž…๋ ฅ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

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")

*์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” ๋™์ผ

  • ์ž…๋ ฅ๋˜๋Š” ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ํ•จ์ˆ˜์˜ ์ž…๋ ฅ ๋ณ€์ˆ˜๋ช…๋งŒ ์ •ํ™•ํžˆ ๊ธฐ์žฌ๋œ๋‹ค๋ฉด, ์›ํ•˜๋Š” ๋ณ€์ˆ˜์— ์ธ์ˆ˜๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ

 

๋””ํดํŠธ ์ธ์ˆ˜ default arguments

DEF) ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ , ์•„๋ฌด ๊ฐ’๋„ ์ธ์ˆ˜๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š์„ ๋•Œ ์ง€์ •๋œ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

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")

*์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” ๋™์ผ

  • your_name ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ‘TEAMLAB’์ด ์ง€์ •๋จ
    • ๋ณ„๋„์˜ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์•„๋„ ์ž‘๋™

 

๊ฐ€๋ณ€ ์ธ์ˆ˜ variable-length arguments

DEF) ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

โž• ์˜ˆ
- ํ•ญ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š์€ ๋‹คํ•ญ๋ฐฉ์ •์‹์˜ ๋ง์…ˆ ์—ฐ์‚ฐ
- ๋งˆํŠธ ๊ณ„์‚ฐ๊ธฐ์—์„œ ํ•ฉ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฐ์‚ฐ
  • *(asterisk)๋กœ ํ‘œํ˜„
  • ๊ณฑ์…ˆ ๋˜๋Š” ์ œ๊ณฑ ์—ฐ์‚ฐ ์™ธ์—๋„ ๋ณ€์ˆ˜๋ฅผ ๋ฌถ์–ด์ฃผ๋Š” ๊ฐ€๋ณ€ ์ธ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ
def asterisk_test(a,b,*args):
		return a+b+sum(args)

print(asterisk_test(1,2,3,4,5))

15  #์‹คํ–‰๊ฒฐ๊ณผ

*๋ณ€์ˆ˜ a, b๋ฅผ ๋„˜๊ฒจ๋ฐ›๊ณ  ๋‚˜๋จธ์ง€๋ฅผ *args๋กœ ๋„˜๊ฒจ๋ฐ›์Œ

  • *args = ๊ฐ€๋ณ€ ์ธ์ˆ˜
    • ์ถœ๋ ฅ ์‹œ, ๊ด„ํ˜ธ๋กœ ๋ฌถ์—ฌ ์ถœ๋ ฅ๋˜๋Š” ํŠœํ”Œtuple ์ž๋ฃŒํ˜•์ž„
    • ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ 
  • ๋ฐ˜๋“œ์‹œ ์ผ๋ฐ˜์ ์ธ ํ‚ค์›Œ๋“œ ์ธ์ˆ˜์— ๋Œ€ํ•œ ์„ ์–ธ์ด ๋ชจ๋‘ ๋๋‚œ ํ›„ ๋งˆ์ง€๋ง‰์— ์„ ์–ธ๋˜์–ด์•ผ ํ•จ
def asterisk_test_2(*args):
		x,y,*z=args
		return x,y,z

print(asterisk_test_2(3,4,5,10,20))

(3,4,[5,10,20])  #์‹คํ–‰๊ฒฐ๊ณผ
  • ์–ธํŒจํ‚น๊ณผ ๋™์ผํ•œ ๊ฐœ๋…์ด๋ฏ€๋กœ ์–ธํŒจํ‚น ๊ฐœ์ˆ˜ ๋˜ํ•œ ๋งž์ถฐ์•ผ ํ•จ

 

ํ‚ค์›Œ๋“œ ๊ฐ€๋ณ€ ์ธ์ˆ˜ keyword variable-length arguments

DEF) ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•

  • *๋ฅผ 2๊ฐœ ์‚ฌ์šฉ, ๋ณ€์ˆ˜๋ช… kwargs
  • ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•dictionary type์œผ๋กœ ์‚ฌ์šฉ
    • ๋ณ€์ˆ˜๋ช…๊ณผ ๊ฐ’์„ ์Œ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹
  • ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋งจ ๋งˆ์ง€๋ง‰, ์ฆ‰ ๊ฐ€๋ณ€ ์ธ์ˆ˜ ๋‹ค์Œ์— ์„ ์–ธ
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}
Fist value is 3
Second value is 4
Third value is 5