01 ํจ์ ๊ธฐ์ด
> ํจ์์ ๊ฐ๋ ๊ณผ ์ฅ์
>> ์ฝ๋ฉ์ ๊ฝ, ํจ์
์ด๋๊น์ง print( )๋ range ๋ฑ๊ณผ ๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํด์์ต๋๋ค.
์ด๋ฒ ์ฅ์์๋ ์ด๋ฐ ํจ์๋ค์ ์ง์ ๋ง๋ค์ด๋ด ์๋ค!
ํจ์๋ฅผ ์กฐ๊ธ ๋ ์ฝ๊ฒ ์ดํดํ๊ธฐ ์ํด ๋ฏน์์ ๋น์ ํด๋ณด์์ต๋๋ค.
์ด๋ ํ ๊ณผ์ผ์ ๊ฐ๊ณ ์ฃผ์ค๋ผ๋ ์์์ ์์ฑํ๊ธฐ ์ํด์ ๋ฏน์๋ผ๋ ๋๊ตฌ๊ฐ ํ์ํ์ฃ ! ์ฌ๊ธฐ์์ ๋ฏน์๋ ๊ณผ์ผ์ ์ ๋ ฅ๋ฐ์ ์ฃผ์ค๋ฅผ ์ถ๋ ฅํ๋ ํจ์์ ๊ฐ์ ์ญํ ์ ํ๊ณ ์๋ ๊ฒ์ ๋๋ค.
๐ ์ฆ, ์ ๋ ฅ๊ฐ์ ๊ฐ์ง๊ณ ์ด๋ค ์ผ์ ์ํํ ๋ค์์ ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ ๋ด์ด๋๋ ๊ฒ, ์ด๊ฒ์ด ๋ฐ๋ก ํจ์๊ฐ ํ๋ ์ผ์ ๋๋ค. (ํจ์์ ๊ฐ๋ )
๊ทธ๋ ๋ค๋ฉด ์ด ๋ฏน์๋ฅผ ์ ์ฌ์ฉํ ๊น์? ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ณผ์ผ์ ์ฌ๋ฌ๋ฒ ์ฃผ์ค๋ก ๋ง๋ค์ด๋จน๊ธฐ ์ํด์ ์ฌ์ฉํฉ๋๋ค. ํจ์๋ ์ด์ ๊ฐ์ต๋๋ค.
๐ ์ฆ, ๋๊ฐ์ ์์ ์ ์ฌ๊ธฐ์๋ ํ๊ณ , ์ ๊ธฐ์๋ ํ๊ณ , ์ฌ๋ฌ ๋ฒ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค. (ํจ์์ ์ฅ์ )
๋ํ, ํ๋ก๊ทธ๋๋ฐ์ ๊ฒฝ์ฐ ์ฌ๋ฌ ์ฌ๋์ด ํ๋์ ์์ ์ ๊ฐ์ด ์์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์ ํ์๋ค์ด ๊ฐ์ ํด์ผ ํ ๋ถ๋ถ์ ๋๋ ์ ํ๊ณ ๋์ค์ ํฉ์น๊ฒ ๋ฉ๋๋ค. ํจ์๋ผ๋ ๊ฐ๋ ์ ๋ฐ๋ก ์ด ๋ฐฉ๋ฒ์ ๊ฐ๋ฅํ๋๋ก ๋์์ค๋๋ค.
>> ๊ฐ๋ ๊ณผ ์ฅ์
ํจ์(funtion) : ์ด๋ค ์ผ์ ์ํํ๋ ์ฝ๋์ ๋ฉ์ด๋ฆฌ, ์ฝ๋์ ๋ฌถ์
- ํ์ํ ๋๋ง๋ค ํธ์ถ ๊ฐ๋ฅ
๋ฐ๋ณต์ ์ผ๋ก ์ํํด์ผ ํ๋ ์ ๋ฌด๋ฅผ ํ ๋ฒ๋ง ์์ฑํด ๋๊ณ ํ์ํ ๋๋ง๋ค ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. (๊ฐ์ ์์ ์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํ์ง ์์๋ ๋จ)
- ๋ ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋ถํ ๊ฐ๋ฅ
ํจ์๋ ์ฝ๋๋ฅผ ๋ ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋๋ ์ ์์ต๋๋ค. (๊ฐ๋จํ ๋ํ์ ๊ณ์ฐํ ๋ ํ๋ก๊ทธ๋จ์ ๊ณฑ์ ์ ํ๋ ์ฝ๋, ๋ง์ ์ ํ๋ ์ฝ๋, ๋๋์ ์ ํ๋ ์ฝ๋ ๋ฑ์ผ๋ก ๋ถํ )
- ์ฝ๋์ ์บก์ํ
ํจ์๋ ์ฝ๋์ ์บก์ํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๐์บก์ํ(Encapsulation) : ๋ฐ์ดํฐ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ํ๋๋ก ๋ฌถ์ ๊ฒ
- ์บก์ํ๋ ๊ฐ์ฒด๋ค์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ธ๋ถ ๋ด์ฉ์ด ์ํ(์ ๋ณด ์๋)๋์ด ์ค๋ฅ๊ฐ ์ ์ต๋๋ค. ๋๋ถ์ ์ธํฐํ์ด์ค๊ฐ ๋จ์ํด์ง๊ณ , ๊ฐ์ฒด๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๋๋ค.
- ์บก์ํ๋ ์ธํฐํ์ด์ค๋ง ์ ์ ์ํ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด ์์ ์ ์ฝ๋๋ฅผ ์ฝ๊ฒ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์๋ ํน์ง์ด ์์ต๋๋ค.
+ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๋ค๋ ๊ฒ์ ์ฝ๋์ ์ ๋ ฅ๋๋ ์ ๋ ฅ input๊ฐ๊ณผ ์ฝ๋์ ์ํ ๊ฒฐ๊ณผ์ธ ์ถ๋ ฅ output ๊ฐ์ ๋ช ํํ ํ๋ค๋ ๊ฒ์ด๋ค. ํํ ๋ธ๋๋ฐ์ค๋ผ๊ณ ๋ ํ๋๋ฐ, ์ธํฐํ์ด์ค๊ฐ ์ ์ ์๋ ํจ์๋ผ๋ฉด ์ฝ๋์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์๋ ์๋ฌด ๋ฌธ์ ๊ฐ ์๋ค.
> ํจ์์ ์ ์ธ
ํจ์๋ฅผ ์ง์ ๋ง๋๋ ค๋ฉด ํจ์๋ฅผ ์ ์๋ถํฐ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ์ด๋ Definition์ ์ฝ์์ธ def๋ฅผ ์ฌ์ฉํฉ๋๋ค!
<๊ธฐ๋ณธ ํํ>
def ํจ์ ์ด๋ฆ (๋งค๊ฐ๋ณ์ #1 ...):
๋ช
๋ น๋ฌธ 1
๋ช
๋ น๋ฌธ 2
return ๏ผ๋ฐํ๊ฐ๏ผ
- def๋ฅผ ํตํด ํจ์ ์ด๋ฆ๊ณผ ๋ฐ์์ฌ ๋งค๊ฐ๋ณ์๋ฅผ ์ ํด์ค๋๋ค.
- ํจ์ ์ด๋ฆ : ํจ์ ์ด๋ฆ์ ๊ฐ๋ฐ์๊ฐ ๋ง์๋๋ก ์ง์ ํ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ํ์ด์ฌ์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
- ์๋ฌธ์๋ก ์ ๋ ฅํ๋ค.
- ๋์ด์ฐ๊ธฐ๋ฅผ ํ ๊ฒฝ์ฐ์ _ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ค.
- ์์ ์ ๋ํ๋ด๊ธฐ ์ํด ๋์ฌ์ ๋ช ์ฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ex) save_model
- ์ธ๋ถ์ ๊ณต๊ฐํ๋ ํจ์์ผ ๊ฒฝ์ฐ ์ค์๋ง์ ์ฌ์ฉํ์ง ์๊ณ ์งง๊ณ ๋ช ๋ฃํ ์ด๋ฆ์ผ๋ก ์ ํ๋ค.
- ๋งค๊ฐ๋ณ์ (parameter, ํ๋ผ๋ฏธํฐ) : ๋งค๊ฐ๋ณ์๋ ํจ์์์ ์ ๋ ฅ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ ๋ณ์๋ฅผ ์๋ฏธํ๋ฉฐ, 1๊ฐ ์ด์์ ๊ฐ์ ์ ์ ์ ์์ต๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ด์ฉํด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์์ ์ ์ํํ ๋ค ์ํ๋ ๊ฒฐ๊ณผ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
- ๋ช ๋ น๋ฌธ : ํจ์ ๋ด๋ถ์ ๋ช ๋ น ์ฝ๋๋ค์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ ๊ฒ์ ์์ง ๋ง์๋ค! ์ํํ๋ ์ฝ๋๋ ์ง๊ธ๊น์ง ๋ฐฐ์ด ์ผ๋ฐ์ ์ธ ์ฝ๋์ ๊ฐ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ฐ๋จํ ๋ง์ ํจ์๋ฅผ ๋ง๋ค๋ฉด์ ๊ฐ์ ์ก์๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ ํจ์๊ฐ ํ ์ผ์ ์ ํํ ์ ํด์ผํฉ๋๋ค. ์ด ํจ์์ ํ ์ผ์ ์ซ์ ๋ ๊ฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ๋ง์ ์ ํ ๋ค ์ถ๋ ฅํ๋ ๊ฒ์ ๋๋ค.
<์ค์ต>
def add_two_num(a, b):
print("๋ง์
์ค...")
result = a + b
return result
value = add_two_num(10, 13)
print(value)
→ ๋ ์๋ฅผ ์ ๋ ฅ๋ฐ๊ณ , ‘๋ง์ ์ค…’์ด๋ผ๋ ๋ฌธ์ฅ์ ์ถ๋ ฅํ ๋ค์, ๋ ์๋ฅผ ๋ํ ๊ฐ์ ๋ฆฌํด๊ฐ์ผ๋ก ๋ฐ์์ค๋ ํจ์
→ ํจ์๋ฅผ ์์์ ์ ์ํด์ฃผ์ด์ผ ํจ : ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๋๋ ์์์ ์๋๋ก ์งํํ๊ธฐ ๋๋ฌธ์ ์์์ ์ ์ํ์ง ์์ผ๋ฉด ์คํ๋ฌธ์์ ํจ์๋ฅผ ์ฐพ์ง ๋ชปํจ
→ a, b ๋ ๋งค๊ฐ๋ณ์, 10, 13์ ์ธ์
<return>
๋ฆฌํด๊ฐ์ ์ญํ ์ ์์๋ณด๊ธฐ ์ํด ์์ ์ฝ๋์์ ๋ฆฌํด๊ฐ ์ ์๋ฅผ ๋นผ๊ณ ์คํํ์ฌ ๋ด ์๋ค.
def add_two_num(a, b):
print("๋ง์
์ค...")
result = a + b
value = add_two_num(10, 13)
print(value)
์ด๋ ๊ฒ ๋ฆฌํด๊ฐ์ ์ ์ํด์ฃผ์ง ์์ผ๋ฉด, ๊ธฐ๋ณธ๊ฐ์ None์ด ๋ฐํ๋ฉ๋๋ค. ๋ฆฌํด๊ฐ์ ํจ์๋ผ๋ ๋ฏน์๊ฐ ๋ง๋ค์ด๋ธ ์ฃผ์ค๋ผ๊ณ ์๊ฐํ๋ฉด ํธํฉ๋๋ค.
์ฆ, ๊ฒฐ๊ณผ๋ฌผ, ์ถ๋ ฅ๊ฐ์ ์๋ฏธํฉ๋๋ค.
ํ๊ฐ์ง ์๊ณ ์์ด์ผ ํ๋ ์ ์ return์ด ๋ฐ์ํ์ ๋, ํจ์๊ฐ ์ข ๋ฃ๋๋ค๋ ์ ์ ๋๋ค. (ํจ์๋ฅผ ๋๋ด๋ return์ ํ)
> ํจ์์ ํํ
ํจ์๋ ๋งค๊ฐ๋ณ์์ ๋ฆฌํด๊ฐ(๋ฐํ๊ฐ)์ ์ ๋ฌด์ ๋ฐ๋ผ ๋ค ๊ฐ์ง ํํ๋ก ๊ตฌ๋ถํฉ๋๋ค.
๊ฐ๊ฐ์ ํจ์๋ฅผ ์ฝ๋๋ก ์์ฑํด๋ด ์๋ค!
def add(a, b):
result = a + b
return result
a = add(3, 4)
print(a)
๋งค๊ฐ๋ณ์O, ๋ฐํ๊ฐO
def add(a, b):
print("%d, %d์ ํฉ์ %d์
๋๋ค." % (a, b, a+b))
add(3, 4)
a = add(3, 4)
print(a)
๋งค๊ฐ๋ณ์O, ๋ฐํ๊ฐX
def say():
return 'Hi'
a = say()
print(a)
๋งค๊ฐ๋ณ์X, ๋ฐํ๊ฐO
def say():
print('Hi')
say()
๋งค๊ฐ๋ณ์X, ๋ฐํ๊ฐX
02 ํจ์์ ์ธ์
> ๋ณ์
์ด์ ๋ณ์์ ๋ํด ์กฐ๊ธ ๋ ์์ธํ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ณ์๋ผ๋ฉด ์ ์ ๋ฐฐ์ ์ง๋ง, ์ ๋ฒ์๋ ์๋ฃํ์ ์ค์ ์ผ๋ก ๋ฐฐ์ ๊ณ , ์ด๋ฒ์๋ ๋ณ์์ ์ข ๋ฅ๋ค์ ๋ฐฐ์๋ณผ ๊ฒ์ ๋๋ค.
- ์ ์ญ๋ณ์์ ์ง์ญ๋ณ์
๋จผ์ ๋ณ์์๋ ์ ์ญ๋ณ์์ ์ง์ญ๋ณ์๊ฐ ์์ต๋๋ค.
์ ์ญ๋ณ์ : ํ๋ก๊ทธ๋จ ์ ์ฒด ์์ญ์์ ์ฌ์ฉํ๋ ๋ณ์
์ง์ญ๋ณ์ : ํน์ ์ฝ๋๋ธ๋ก์์๋ง ์ง์ญ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ณ์
def add_two_num(a, b):
print("๋ง์
์ค...")
result = a + b
return result
result = 0
add_two_num(10,13)
print(result)
์ ์ฝ๋๋ฅผ ์คํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ถ๋ช result ๊ฐ์ 10 + 13 ๊ณ์ฐ์ ํด์ ๋์ ํ๋๋ฐ ๊ฒฐ๊ณผ๋ 0์ด ๋์์ต๋๋ค.
์ด๋ ์ง์ญ๋ณ์์ ์ ์ญ๋ณ์์ ๊ฐ๋ ์ ๋ณด์ฌ์ค๋๋ค. result = 0๊ณผ result = a + b ์์์ result๋ ์๋ก ๋ค๋ฆ ๋๋ค.
add_two_num ์์ result๋ ํด๋น ํจ์ ๋ด์์๋ง ์ฌ์ฉํ๋ ์ง์ญ๋ณ์๋ก์จ ์ฌ์ฉ๋๊ณ ์ฌ๋ผ์ง๋๋ค.
→ ๊ทธ๋ ๋ค๋ฉด ํจ์ ์์์ ์ ์ญ๋ณ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด? : global ๋ณ์ ์ง์
def add_two_num(a, b):
global result
print("๋ง์
์ค...")
result = a + b
return result
result = 0
add_two_num(10,13)
print(result)
ํจ์ ์์์ result๋ฅผ global ๋ณ์๋ก ์ง์ ํด์ฃผ์์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ์ฐ๋ฆฌ๊ฐ ์๊ฐํ๋๋๋ก ๋์์์ ์ ์ ์์ต๋๋ค.
> ๋งค๊ฐ๋ณ์์ ์ธ์
๐ง ๋งค๊ฐ๋ณ์(parameter)์ ์ธ์(argument)์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น์?
์ฝ๋์ ํจ๊ป ์ดํด๋ด ์๋ค.
def add_two_num(a, b): # ํจ์ ์ ์
print("๋ง์
์ค...")
result = a + b
return result
a = 10
b = 13
value = add_two_num(a, b) # ํจ์ ํธ์ถ
์ฐ๋ฆฌ๋ ํจ์๋ฅผ ์ ์ํ ๋, ๊ทธ๋ฆฌ๊ณ ํจ์๋ฅผ ํธ์ถํ ๋, ๊ฐ์ ๋ฃ์ต๋๋ค.
ํจ์๋ฅผ ์ ์ํ ๋ ๋ฃ๋ ๊ฐ(๋ณ์)๋ฅผ ๋งค๊ฐ๋ณ์๋ผ ํ๊ณ ,
ํจ์๋ฅผ ํธ์ถํ ๋ ๋ฃ๋ ๊ฐ์ ์ธ์๋ผ ํฉ๋๋ค.
> ์ธ์์ ์ข ๋ฅ
ํจ์์ ์ ๋ ฅ์ผ๋ก ๋ค์ด๊ฐ๋ ๋ณ์์ธ ์ธ์์ ๋ค์ํ ํํ์ ๋ํด ์์๋ด ์๋ค!
>> ํค์๋ ์ธ์
→ ํจ์์ ์ธํฐํ์ด์ค์์ ์ง์ ํ ๋ณ์๋ช ์ ์ฌ์ฉํ์ฌ ํจ์์ ์ธ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ
def print_sth(my_name, your_name):
print("Hello {0}, My name is {1}".format(your_name, my_name))
print_sth("Minji", "Hanni")
print_sth(your_name = "Hanni", my_name = "Minji")
print_sth ํจ์๋ (my_name, your_name)์ด๋ผ๋ ์ ๋ ฅ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๋๋ค. ํจ์๋ฅผ ํธ์ถํ ๋ ์ธ์๊ฐ ์์๋๋ก ์ ๋ ฅ๋๋๋ก ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. (์ฒซ ๋ฒ์งธ print)
๊ทธ๋ฌ๋ ํจ์์ ์ ๋ ฅ ๋ณ์๋ช ๋ง ์ ํํ ๊ธฐ์ฌ๋๋ค๋ฉด ์์์ ์๊ด์์ด ์ํ๋ ๋ณ์์ ์ธ์๋ฅผ ๋ฃ์ ์ ์์ต๋๋ค. (๋ ๋ฒ์งธ print)
์ด์ฒ๋ผ ํจ์์ ์ธํฐํ์ด์ค์์ ์ง์ ํ ๋ณ์๋ช ์ ์ฌ์ฉํด์ ์ธ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด ํค์๋ ์ธ์๋ฅผ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ๋๋ค.
>> ๋ํดํธ ์ธ์
→ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ฌด๋ฐ ๊ฐ๋ ์ธ์๋ก ๋์ด๊ฐ์ง ์์ ๋ ์ง์ ๋ ๊ธฐ๋ณธ๊ฐ(๋ํดํธ ๊ฐ)์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
def print_sth_2(my_name, your_name = "Hanni"):
print("Hello {0}, My name is {1}".format(your_name, my_name))
print_sth_2("Minji", "Hanni")
print_sth_2("Minji")
1ํ์์ ํจ์์ ์ ๋ ฅ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๋๋ฐ, your_name ๋งค๊ฐ๋ณ์์๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก “Hanni”๊ฐ ์ง์ ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
→ ํจ์๋ฅผ ํธ์ถํ ๋ your_name ๋งค๊ฐ๋ณ์์๋ ๋ณ๋์ ๊ฐ์ ํ ๋นํ์ง ์์๋ ๋ํดํธ ๊ฐ์ด ํ ๋น๋จ
>> ๊ฐ๋ณ ์ธ์
→ ํจ์์ ๋งค๊ฐ๋ณ์ ๊ฐ์๊ฐ ์ ํด์ง์ง ์์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ex) ๊ณ ๊ฐ์ด ๋ฌผ๊ฑด์ ์ผ๋ง๋ ๊ตฌ๋งคํ ์ง ๋ชจ๋ฅด๋ ๋งํธ ๊ณ์ฐ ๋ฑ…
→ * ๋ก ํํ ๊ฐ๋ฅ ( * ๋ asterisk๋ผ๊ณ ๋ถ๋ฆ)
def asterisk_test(a, b, *args):
return a + b + sum(args)
print(asterisk_test(1, 2, 3, 4, 5))
# args ๋ argument๋ฅผ ์ค์ธ ๊ฒ, ์ฆ ์ธ์๋ค-์ด๋ผ๋ ๋ป์ผ๋ก ์ฌ์ฉ…
ํจ์ asteisk_test( )๋ ๋ณ์ a, b๋ฅผ ๋๊ฒจ๋ฐ๊ณ , ๋๋จธ์ง๋ฅผ *args๋ก ๋๊ฒจ๋ฐ๊ณ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉํ๋ *args๊ฐ ๊ฐ๋ณ ์ธ์๋ผ๊ณ ํฉ๋๋ค.
์ฆ, 1๊ณผ 2๋ ๊ฐ๊ฐ a์ b์ ํ ๋น๋๊ณ , ๋๋จธ์ง ์ธ์์ธ 3, 4, 5๊ฐ ๋ชจ๋ *args์ ํ ๋น๋ฉ๋๋ค.
- ํํ
๊ฐ๋ณ ์ธ์์ ํํ๋ฅผ ํ์ธํด๋ณด๊ธฐ ์ํด ์ง์ ์ถ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค!
def asterisk_test(a, b, *args):
print(args)
print(asterisk_test(1, 2, 3, 4, 5))
์ถ๋ ฅํด๋ณด๋ ๊ฒฐ๊ณผ๊ฐ์ด ๊ดํธ์ ๋ฌถ์ฌ ์ถ๋ ฅ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๊ดํธ๋ก ๋ฌถ์ฌ ์ถ๋ ฅ๋๋ ์๋ฃํ์ ํํ(tuple) ์๋ฃํ์ด๋ผ๊ณ ํฉ๋๋ค! (๋์ค์ ๋ฐฐ์ฐ๊ฒ ์ง๋ง ๋ฆฌ์คํธ ์๋ฃํ์ฒ๋ผ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.)
- ํน์ง
๐ฌ ๊ฐ๋ณ ์ธ์ * ๋ ๋ฐ๋์ ์ผ๋ฐ์ ์ธ ํค์๋ ์ธ์์ ๋ํ ์ ์ธ์ด ๋๋ ํ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ ์ธ๋์ด์ผ ํฉ๋๋ค.
๐ฌ ๊ฐ๋ณ ์ธ์๋ ํํ ํํ๋ก ๋ฆฌ์คํธ์ ๊ฐ์ด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ ์ ์์ต๋๋ค.
๐ฌ ๊ฐ๋ณ ์ธ์์ ๊ฐ์๋ฅผ ์ ํํ ์๋ค๋ฉด ์ธํจํน์ ํ ์ ์์ต๋๋ค.
def asterisk_test_2(*args):
x, y, *z = args
return x, y, z
print(asterisk_test_2(3, 4, 5, 6, 7))
→ * ๋ ๊ธฐ๋ฅ์ด ๋ค์ํ์ฌ ์ธํจํนํ ๋๋ ๊ฐ์ ๊ฐ๋ณ ์ธ์์ ํํ๋ก ๋ฐ์ ์ ์์ต๋๋ค.
>> ํค์๋ ๊ฐ๋ณ ์ธ์
→ ๊ธฐ์กด์ ๊ฐ๋ณ ์ธ์๋ ๋ณ์์ ์ด๋ฆ์ ์ง์ ํ ์ ์๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค.
→ ํค์๋ ๊ฐ๋ณ ์ธ์๋ **๋ฅผ ์ฌ์ฉํ์ฌ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ํฉ๋๋ค.
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) # ํจ์๋ฅผ ํธ์ถํ ๋ ์ธ์(๋ณ์)์ ์ด๋ฆ์ ๋ฏธ๋ฆฌ ์ ํด๋๋๋ค.
# kwargs๋ keyword arguments๋ฅผ ์ค์ธ ๊ฒ, ์ฆ ํค์๋ ์ธ์๋ค-์ด๋ผ๋ ๋ป์ผ๋ก ์ฌ์ฉ…
ํจ์๋ฅผ ํธ์ถํ ๋ first, second, third ์ธ์ ์ด 3๊ฐ์ง๋ฅผ ๋๊ฒผ์ต๋๋ค. print ํจ์์์ ๊ทธ ์ธ์๋ค์ด {’first’ : 3, ‘second’ = 4, ‘third’ = 5}์ ๊ฐ์ ํํ๋ก ์ถ๋ ฅ์ด ๋ฉ๋๋ค.
์ด๋ ๊ฒ { ‘๋ณ์๋ช ’ = ๊ฐ, ‘๋ณ์๋ช 2’ = ๊ฐ2 …} ์ ๊ฐ์ด ๋ณ์๋ช ๊ณผ ๊ฐ์ ํ ์์ผ๋ก ํด์ ์ ์ฅํ๋ ํํ๋ฅผ ๋์ ๋๋ฆฌ ์๋ฃํ์ด๋ผ๊ณ ํฉ๋๋ค.
→ ์ฆ, ํค์๋ ๊ฐ๋ณ ์ธ์๋ ๋์ ๋๋ฆฌ ์๋ฃํ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
kwargs = {'first': 3, 'second': 4, 'third': 5}
print("Second value is {second}".format(**kwargs))
print("Second value is {second}".format(first =3, second = 4, third =5))
def kwargs_test(one, two, *args, **kwargs):
print(one + two + sum(args))
print(kwargs)
kwargs_test(3, 4, 5, 6, 7, 8, 9, first=3, second=4, third=5)
03 ์ข์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
> ์ข์ ์ฝ๋์ ์๋ฏธ
์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ํํ๋ ์ด์ ๋๋ค. ์ฌ๋ฌ ์ฌ๋๊ณผ ํจ๊ป ์ผํ๊ธฐ ๋๋ฌธ์ ํ๋ ์ ํ ์ด์ ๋ฐํ๋ฅผ ํ๋ฏ ์ฌ๋๋ค๊ณผ ์ํตํ๋ฉด์ ํ๋ก๊ทธ๋๋ฐํด์ผ ํฉ๋๋ค.
“์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ฝ๋๋ ์ด๋ ๋ฐ๋ณด๋ ๋ค ์งค ์ ์๋ค. ์ข์ ํ๋ก๊ทธ๋๋จธ๋ ์ฌ๋์ด ์ดํดํ ์ ์๋ ์ฝ๋๋ฅผ ์ง ๋ค.” - ๋งํด ํ์ธ๋ฌ
๐ ์ฆ, ๋ค๋ฅธ ์ฌ๋์ด ๋ด๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ๊ต์ฅํ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ํ๋ก๊ทธ๋จ์ ์์ฑํด์ผ ํ๋ค๋ ๋ป์ ๋๋ค. (๊ฐ๋ ์ฑ)
๐ ํ๋ก๊ทธ๋จ ์ฝ๋๋ ๋ง์ ์ฌ๋์ด ์ฝ๊ฒ ์ฝ๊ณ ์ดํดํ ์ ์๋๋ก ๊ฐ๋ ์ฑ์ด ์ข์์ผ ํฉ๋๋ค.
> ์ฝ๋ฉ ๊ท์น
ํ์ด์ฌ ํค๋ณธ ์ฝ๋ฉ ๊ท์น ์ค ๋ํ์ ์ธ ๊ฒ ๐
- ๋ค์ฌ์ฐ๊ธฐ๋ 4 ์คํ์ด์ค
- ํ ์ค์ ์ต๋ 79์๊น์ง
- ๋ถํ์ํ ๊ณต๋ฐฑ์ ์์ ๊ธฐ
PEP-8 ์ค ๋ํ์ ์ธ ๊ฒ ๐
- ์ฐ์ฐ์๋ ํ ์นธ ์ด์ ๋์ฐ์ง ์๋๋ค.
- ์ฃผ์์ ํญ์ ๊ฐฑ์ ํ๊ณ ๋ถํ์ํ ์ฃผ์์ ์ญ์ ํ๋ค.
- ์๋ฌธ์ l(์), ๋๋ฌธ์ O(์ค), ๋๋ฌธ์ I(์์ด)๋ ์ฌ์ฉ์ ๊ธํ๋ค.
lIO0 = "Hard to Understand" # ๊ตฌ๋ถํ๊ธฐ ์ด๋ ต์ต๋๋ค...
- ํจ์๋ ์๋ฌธ์๋ก ๊ตฌ์ฑํ๊ณ , ํ์ํ๋ฉด ๋ฐ์ค๋ก ๊ตฌ๋ถํ๋ค.
> ํจ์ ๊ฐ๋ฐ ๊ฐ์ด๋๋ผ์ธ
>> ํจ์์ ์ด๋ฆ
- ํจ์ ๋ด์ฉ์ ๊ฐ๋ฅํ๋ฉด ์งง๊ฒ (์ค ์๋ฅผ ์ค์ฌ์) ์์ฑํ ๊ฒ
- ํจ์ ์ด๋ฆ์ ํจ์์ ์ญํ ๊ณผ ์๋๋ฅผ ๋ช ํํ ๋๋ฌ๋ผ ๊ฒ
์ฃผ๋ก ‘๋์ฌ+๋ช ์ฌ’์ ํํ๋ก ์ด๋ฆ์ ์ง์ ํ ๋๊ฐ ๋ง์ต๋๋ค.
def print_hello_world():
print("Hello, World")
def get_hello_world():
return "Hello, World"
>> ํจ์์ ์ญํ
- ํจ์๋ ํ ๊ฐ์ง ์ญํ ์ ๋ช ํํ ํด์ผ ํฉ๋๋ค.
- ์ต์ํ์ ์ญํ ๋ง ์ํํ ์ ์๋๋ก!
def add_variables(x, y)๏ผ
return x + y
def add_variables(x, y):
print(x, y)
return x + y
→ ๋ ๋ณ์๋ฅผ ๋ํ๋ ํจ์ํ๋ฉด ๊ตณ์ด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ ํ์๋ ์๋ค.
>> ํจ์๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ
1. ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ์ฝ๋๋ฅผ ํจ์๋ก ๋ณํ
a = 5
if (a>3):
print("Hello World")
print("Hello SWU")
if (a>4):
print("Hello World")
print("Hello SWU")
if (a>5):
print("Hello World")
print("Hello SWU")
def print_hello():
print("HeUo World")
print("Hello SWU")
a = 5
if (a > 3):
print_hello()
if (a > 4):
print_hello()
if (a >5):
print_hello()
2. ๋ณต์กํ ๋ก์ง์ด ์ฌ์ฉ๋์์ ๋ ์๋ณ ๊ฐ๋ฅํ ์ด๋ฆ์ ํจ์๋ก ๋ณํ
import math
a = 1; b = -2; c = 1
print((-b + math.sqrt(b ** 2 - (4 * a * c)) ) / (2 * a))
print((-b - math.sqrt(b ** 2 - (4 * a * c)) ) / (2 * a))
1.0
1.0
ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ์ ์ฅ์์ ๊ณต์์ ์๋ฏธ๋ง ์๋ฉด ๋๊ณ ๊ตณ์ด ๊ณต์์ ๊ตฌํ ๊ณผ์ ๊น์ง๋ ์ ํ์ ์์ต๋๋ค.
import math
def get_result_quadratic_equation(a, b, c):
values = [ ]
values.append((-b + math.sqrt(b ** 2 - (4 * a * c))) / (2 * a))
values.append((-b - math.sqrt(b ** 2 - (4 * a * c)) ) / (2 * a))
return values
print(get_result_quadratic_equation(1,-2,1))
[1.0, 1.0]
'๐ ์คํฐ๋ > ํ์ด์ฌ ์คํฐ๋ ๊ฐ์์๋ฃ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[4ํ/๊น๋ฏผํ] 5์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ํจ์ (0) | 2023.04.13 |
---|---|
[1ํ/ํ์์] 5์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ํจ์ (0) | 2023.04.06 |
[1ํ/์ง๋ค์ธ] 5์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ํจ์ (0) | 2023.04.06 |
[1ํ/ํ๊ท๋ฆผ] 5์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ํจ์ (0) | 2023.04.06 |
[2ํ/๊น๊ฐ๋ฆผ, ์ต๋ค์] 5์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ํจ์ (0) | 2023.04.06 |