Function
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํจ์๋ ํน์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉ ๋ฐ ๋ณด์๊ฐ ๊ฐ๋ฅํ ํํ์ ์ฝ๋ ๋ธ๋ญ์ด๋ค.
Python์์ ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ def ํจ์๋ช
(๋งค๊ฐ๋ณ์):
๋ก ์ ์ธ์ ํ ๋ค, ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ ํจ์ ๋ชธ์ฒด๋ฅผ ๊ตฌํํ๋ฉด ๋๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด input
๊ณผ output
์ผ๋ก ๋๋๋๋ฐ ์ฐ๋ฆฌ๋ ์์ผ๋ก input
์ ๋งค๊ฐ๋ณ์, output
์ ๋ฐํ ๊ฐ, ํจ์ ๋ชธ์ฒด๋ก ํํํ ๊ฒ์ด๋ค.
ํจ์์ ๋ถ๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ 4๊ฐ์ง๋ก ๋๋ ์ ์๋๋ฐ ๋๋๋ ๊ธฐ์ค์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์๋, ๋ฐํ ๊ฐ์ด ์๋ ์๋๋ก ๋๋๋ค.
๋งค๊ฐ๋ณ์ (X) ๋ฐํ ๊ฐ (X)
def intro():
print('hello world')
intro()
๋งค๊ฐ๋ณ์ (O) ๋ฐํ ๊ฐ (X)
def intro(arg):
print(arg+"๋ฅผ ์
๋ ฅํ์
จ์ต๋๋ค.")
intro(input('์ซ์๋ฅผ ์
๋ ฅํ์ธ์ '))
>>>
1234๋ฅผ ์
๋ ฅํ์
จ์ต๋๋ค.
๋งค๊ฐ๋ณ์ (X) ๋ฐํ ๊ฐ (O)
def intro():
return 10
print(intro(), '์ด ์ถ๋ ฅ๋ฉ๋๋ค')
>>>
10 ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
๋งค๊ฐ๋ณ์ (O) ๋ฐํ ๊ฐ (X)
list_t = []
def fill():
list_t.append('filled')
fill()
fill()
fill()
fill()
print(list_t)
>>>
['filled', 'filled', 'filled', 'filled']
์์ ๊ฐ์ด ๋ฐํ ๊ฐ๊ณผ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ํจ์์ ๊ธฐ๋ฅ๊ณผ ๋ชฉ์ ์ด ๋ฌ๋ผ์ง๋๋ฐ ์ด๋ ํน์ ์ซ์, ๋ฌธ์์ด, ์ํ์ค์๋ง ์ ์ฉ๋๋ ๊ฒ์ด ์๋๋ผ ๋ค๋ฐฉ๋ฉด์ผ๋ก ์ ์ฉ๋๋๋ฐ ์ฐจ์ฐจ ๋ฐฐ์๊ฐ๋ฉด์ ๋๋ผ๋ฉด ๋๋ค!!
์ธ์์ ๋งค๊ฐ๋ณ์์ ์ฐจ์ด์
ํ๋ก๊ทธ๋๋ฐ์ ๊ณต๋ถํ๋ค๋ณด๋ฉด ๋น์ทํ ๋จ์ด๊ฐ ๊ณ์ ๋์ค๊ณ ๊ทธ ๊ฒ๋ค์ด ์ฐ๋ฆฌ๋ฅผ ํ๋ค๊ฒ ํ๋ค... ์ ๊ทธ๋๋ ํ๋ ๊ณต๋ถ์ ๊ทธ๋ฐ ์ก๋คํ๊ฒ ํ๋ค๊ฒ ํ ์ ์์ผ๋ ์ด์ฅ๋ถํฐ ์์ ํ ์๊ณ ๋์ด๊ฐ์.
-
์ธ์(argument)
ํจ์๋ก ์ ๋ฌ๋๋ ๊ฐ -
๋งค๊ฐ๋ณ์(parameter)
ํจ์์์ ์ธ์๋ก ์ ๋ฌ๋ ๊ฐ์ ๋ณต์ฌํ์ฌ ๋ฃ๋ ๋ณ์
์์น ์ธ์์ ํค์๋ ์ธ์
Python์ ๋ค๋ฅธ ์ธ์ด์ ํจ์์ ๋นํด ๊ต์ฅํ ์ ์ฐํ๊ณ , ๋ ํนํ๊ฒ ์ฒ๋ฆฌํ๋ค.
์์น ์ธ์๋, ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์๊ณ ์๋ ํจ์์ ํน์ฑ(์ธ์๋ ๋ค์ด์จ ์์์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค)๊ณผ ๊ฐ๋ค.
ํ์ง๋ง ํค์๋ ์ธ์๋, ๋งค๊ฐ๋ณ์์ ์์ํ๋ ์ด๋ฆ์ ์ธ์์ ์ง์ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ค์ ์๋ฅผ ๋ณด์.
์์น ์ธ์
def add(a, b, c):
sum = (a + b + c)
return sum
print(add(1,2,3))
add
์ ์ธ์๋ก ๋ค์ด๊ฐ 1,2,3์ ๊ฐ๊ฐ a, b, c
์ ์์๋๋ก ํ ๋น๋๋ค!
ํค์๋ ์ธ์
def lunch(juice, dessert, main_dish):
return {'main_dish': main_dish, 'juice':juice, 'dessert':dessert}
print(lunch('orange', 'ice Cream', 'steak'))
>>
{'main_dish': 'steak', 'juice': 'orange', 'dessert': 'ice Cream'}
์ด๊ฒ์ด ์์น์ธ์์ ๊ธฐ๋ฐํ ์ ์์ธ๋ฐ ํค์๋ ์ธ์๋ฅผ ์ฌ์ฉํ๋ฉด ์์น ์ธ์์ ๋ฒ์น์ ์๋ฐฐํด์ ์ธ์๋ก ๊ฐ์ ๋๊ธธ ์ ์๋ค.
def lunch(juice, dessert, main_dish):
return {'main_dish': main_dish, 'juice':juice, 'dessert':dessert}
print(lunch(dessert='ice Cream', juice='grape juice', main_dish='fish'))
>>
{'main_dish': 'fish', 'juice': 'grape juice', 'dessert': 'ice Cream'}
๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์๊ฐ ์ง์ ํ๊ธฐ
ํจ์๋ฅผ ํธ์ถํ ๋ ๋งค๊ฐ๋ณ์๊ฐ ์์ผ๋ฉด ํจ์ ํธ์ถ์ด ๋ถ๊ฐ๋ฅํ๋ค. ํ์ง๋ง Python์ ๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์ ๊ฐ์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
def lunch(juice, dessert, main_dish = 'steak'):
return {'main_dish': main_dish, 'juice':juice, 'dessert':dessert}
print(lunch('orange', 'ice Cream'))
>>>
{'main_dish': 'steak', 'juice': 'orange', 'dessert': 'ice Cream'}
์๋ lunch()
๋ ๋งค๊ฐ๋ณ์๋ฅผ 3๊ฐ๋ฅผ ๋ฐ์์ผ ํ์ง๋ง print(lunch())
์์ ๋งค๊ฐ๋ณ์๋ฅผ 2๊ฐ๋ง ์ฃผ๋ ์ํฉ์ด ๋์๋ค.
๊ทธ๋ ์ง๋ง ์ฒซ ๋ฒ์งธ def lunch(juice, dessert, main_dish = 'steak')
๋๋ฌธ์ ๋งค๊ฐ๋ณ์์ ๊ฐฏ์๊ฐ ๋ง์ง ์์๋ ์ ์ ์คํ์ด ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ์ฃผ์ํด์ผํ ์ ์ด ์๋๋ฐ, ๊ธฐ๋ณธ ์ธ์๊ฐ์ ํจ์๊ฐ ํธ์ถ๋ ๋ ๊ณ์ฐ๋๋ ๊ฒ์ด ์๋๋ผ ์ ์๋ ๋ ๊ณ์ฐ๋๋ค.
๊ทธ๋์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ํํ ํ์ ์ ์ํ์ค๋ง ๊ธฐ๋ณธ ์ธ์๋ก์จ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
์์น ์ธ์ ๋ชจ์ผ๊ธฐ : *
ํจ์์ ๋งค๊ฐ๋ณ์์ *
์ ์ฌ์ฉํ๋ค๋ฉด, ๋งค๊ฐ๋ณ์์์ ์์นํ ์ธ์ ๋ณ์๋ค์ ํํ๋ก ๋ฌถ๋๋ค.
์ฌ์ฉ๋ฒ์ ์๋์ ๊ฐ์ด ๋งค๊ฐ๋ณ์ ์์*
๋ฅผ ๋ถํ์ค๋ค.
def print_args(*some):
print('Some tuple in : ', some)
print(print_args('efg','abc'))
>>>
Some tuple in : ('asdf', 'asdf')
์ด๋ ๊ฒ ๋๋ค๋ฉด ๋งค๊ฐ๋ณ์๊ฐ ๋ช ๊ฐ๊ฐ ์ค๋ ํ๋์ ํํ ์์ ์ ์ฅ๋๊ฒ ๋๋ฉฐ ๋งค๊ฐ๋ณ์์ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฌ๋ฌ ๋งค๊ฐ ๋ณ์๋ฅผ ์๋ฌด์ ์ผ๋ก ๋ฐ๊ณ ์ถ๊ฐ์ ์ธ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ๋๋? ๋ค์๊ณผ ๊ฐ๋ค.
def print_args(var1, var2, *other_var):
print('var1: ', var1, ' var2: ', var2)
print('other var is : ', other_var)
print(print_args('efg','abc', 'var3', 'kim', 'temp'))
>>>
var1: efg var2: abc
other var is : ('var3', 'kim', 'temp')
์ด๋ฐ ์์ผ๋ก *
๊ฐ ๋ถ์ ๋งค๊ฐ๋ณ์๋ก ๋ค์ด์จ ์ธ์ ๊ฐ๋ค์ ๋ชจ๋ ํ ํํ์ ์ ์ฅ๋๋ค.
๋งค๊ฐ๋ณ์ 3๊ฐ์ง ๋ฐฉ์์ ๋ํด ์ ๋ฆฌํ์๋ฉด
ํจ์์ ๋งค๊ฐ๋ณ์ 3๊ฐ์ง ๋ฐฉ์
func1(v1, v2, v3)
: ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํด์ฃผ๊ณ ์ ๋ฌfunc2(*args)
: ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ์ง ์๊ณ ์ ๋ฌ.func3(**kwargs)
:
func1(v1, v2, v3)
์์น ์ธ์ ์ง์ ์ด๋ผ๊ณ ํจ(๊ฐ์ ๋งค๊ฐ๋ณ์์ ์์ํ๋ ๋ณ์์ ๋ณต์ฌ)
๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ์ธ์ด์์ ํจ์(๋ฉ์๋)์ ์ฌ์ฉ๋ฒ๊ณผ ๋น์ทํจ
์๋ฃํ์ด ์๋ python์ ํน์ง์ผ๋ก ๋ณ์ ์ด๋ฆ๋ง ์ฃผ๋ฉด ๋จ.
์ถ๊ฐ์ ์ผ๋ก func1(v1, v2, v3 = 0)
์ด๋ฐ์์ผ๋ก ์ ์ธํ ๋ v3
๋ฅผ ์ด๊ธฐํ ํ ์ ์์
func2(*args)
์์น ์ธ์ ๋ชจ์ผ๊ธฐ๋ผ๊ณ ํจ
๋งค๊ฐ๋ณ์์ ๊ฐ์๋ฅผ ์ง์ ํ์ง ์๊ณ ์ ๋ฌํ๋ ๋ฐฉ์
*args
ํํ๋ก ์ ๋ฌ๋ ๋งค๊ฐ๋ณ์๋ ํํ ํ์์ผ๋ก ์ ๋ฌ.- ์ ํด์ง์ง ์์ ๋ค์์ ๋งค๊ฐ๋ณ์๋ฅผ ํํ ํ์์ผ๋ก ๋ฐ์ ์ ์์
func3(**kwargs)
ํค์๋ ์ธ์ ๋ชจ์ผ๊ธฐ๋ผ๊ณ ํจ
ํจ์ ํธ์ถ์ ํ ๋ ๋์
๋๋ฆฌ ํ์์ผ๋ก ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํจ
- key-value ํํ๋ก ์ฌ์ฉ
'๐คท๐ผโโ๏ธ Etc... > - C, C++, Python, Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Python ๋ค์ํ ํจ์ ๊ธฐ๋ฒ : Inner Function, Closure, Lambda ๋ด์ฅํจ์, ํด๋ก์ , ๋๋ค ๊ฒฝํํ๊ธฐ. (0) | 2019.12.07 |
---|---|
Python ํ์ด์ฌ์์์ ํจ์ (0) | 2019.12.07 |
Python ์ปดํ๋ฆฌํจ์ comprehension (0) | 2019.12.06 |
Python ์ํํ๊ธฐ for๋ฌธ์ ๋ํ ๋ชจ๋ ๊ฒ. (0) | 2019.12.06 |
Python ๋ฐ๋ณต๋ฌธ while ์ ๋ณตํ๊ธฐ. (0) | 2019.12.06 |
๋๊ธ