함수 #
함수에는 입력과 출력이 존재하며, 입력을 받아서 함수가 가공후 출력을 하는것이 일반적인 형태이다. 어떠한 반복적인 활동(재생산성)이 필요할때 코드의 간편화를 위해 사용이된다. 코드를 함수화 하면 가독성이 증가하는 장점이 있음
def name(input):
action1
action2
return output
var3 = name(var1, var2)
인수(arguments)는 함수 호출시 전달하는 입력값은 지칭한다.
매개변수(parameter) : 매개변수는 함수에서 input을 의미한다.
- 디폴트 매개변수 : 매개변수에 디폴트값(초기값)을 설정해 줄수 있다. 매개변수가 여러개일때 디폴트값을 뒤에서 부터 작성
def name(var1, var2='data2'):
action1
action2
return output
- 가변 매개변수 : 매개변수를 여러개 사용할때 (*)을 이용하여 튜플화 하여 불러올 수 있다. 가변 매개변수 뒤에는 일반 매개변수가 올수 없음
def name(var1, *vars): # vars = ['data2','data3']
action1
return output
name('data1', 'data2','data3')
- 키워드 매개변수 : 매개변수에 값을 넣을때 순서대로 입력을 받는데 키워드를 이용하면 순서와 상관없이 값을 넣을 수 있게된다.
def name(var1, var2):
action1
return output
name(var1 = 'data1', var2 = 'data2')
- 키워드 가변 매개변수 : 키워드 매개변수를 여러개 사용할때 (**)을 이용하여 딕셔너리화 하여 불러올 수 있다.
def name(**vars): # vars = {'var1':'data1', 'var2':'data3'}
action1
return output
name(var1 = 'data1', var2 = 'data2')
지역변수(local variable)와 전역변수(global variable) : 함수를 사용하게 되면 주의해야하는 것중에 하나가 지역변수와 전역변수의 혼동을 막는것이다. 지역변수는 해당함수에서 사용이 되는 변수를 의미하고 전역변수는 함수의 내외 적으로 사용이 되는 변수를 의미한다.
data2 = 'value2'
data4 = 'value4'
def func(data1, data2):
data3 = 'value3' # local variable
global data4 # global variable
print(data4) # value4
data2 = 'value5'
```data2는 인수를 받아서 지역변수화 된것을 활용하기에
전역변수인 data2는 변화없이 함수안에서만 value5로 작용```
func('value1',data2)
람다 함수(lambda function) #
람다함수는 간단한 함수를 작성할때 사용이된다. 아래는 일반 함수를 람다 함수로 표현한 것이다.
def add(a, b):
return a+b
add = lambda a, b : a + b
----------------------------------- level up
lambda a : True if <state1> else False
map 함수 #
순서가 있는 자료형의 원소를 순차적으로 함수에서 활용하는 함수이다.
list1 = [1,2]
def func1(data):
return data+1
data = map(func1 ,list1) # map object type
list(data) # type conversion
filter 함수 #
순서가 있는 자료형의 원소들에서 원하는 항목을 추출하는 함수이다.
list1 = [1,2]
def func1(data):
return data > 1
data = filter(func1 ,list1) # filter object type
list(data) # type conversion
reduce 함수 #
순서가 있는 자료형의 원소들의 스택을 쌓는 함수이다.
from functools import reduce
list1 = [1,2,3,4,5]
def func1(data1, data2):
return data1+ data2
data = reduce(func1 ,list1) # reduce object type