순서와 규칙이 바뀌지 않는 일련의 패턴을 가진 작업을 모아놓은 것.
정의
def 함수이름(인자,…):
코드
인자
인자는 parameter와 argument로 구분할 수 있다.
- parameter : 함수 쪽의 중개자, 데이터를 함수 내부로 들여오는 역할.
- argument : 외부 중개자, 함수 호출시 전달되는 인자. 외부의 변수 혹은 값 그 자체.
- parameter 와 argument 는 호출시 위치에 맞게 매치된다.
def func(x,y): #x,y는 parameter
print(x+y)
a=1
func(a,3) #a,3은 argument
-> 4
디폴트 값이 있는 인자
-
인자의 기본값을 미리정해놓는 경우, 디폴트 값으로 계산을 하되 만약 디폴트 인자에 대응되는 argument 가 들어오면 그 값으로 계산을 한다.
-
디폴트 값을 갖는 인자는 그렇지 않는 인자보다 앞부분에 정의될 수 없음에 유의하자.
def test(n,step=1): # step이 디폴트 값을 가지는 인자
...
test(5) # step은 기본값인 1로 계산됨
test(5,3) # 디폴트 값을 가진 인자 위치에 3이 들어왔으므로 3으로 계산됨
def test2(step=1 , n ): # 불가능. 위치에 주의하자
...
키워드 인자
- 함수를 호출할 때 parameter 이름을 명시하는 것.
test(n=30,5) # 키워드 인자 사용
test(step=5,5)
# 불가능, 이미 앞에서 step을 정의하고 또 뒤에서 step을 정의하려고 하므로 에러발생
가변인자
- “*” 을 붙이면 외부에서 전달받은 데이터를 튜플타입으로 저장
- “**” 은 사전타입으로 저장
- 가변인자는 함수정의 시, 인자들 중 마지막에 나와야함.
def argsfunc(*args): # 튜플로 취급함
for x in args:
print(x)
argsfunc(1,2,3)
->
1
2
3
def argsfunc2(**args): # 사전으로 취급
for x in dict.keys():
print(x)
argsfunc2(a=1,b=2,c=3) # 인자 전달방법
->
a
b
c
return
- 함수내부에서 특정값을 호출한 곳에 반환하며, 함수를 종료시킨다
- 인자와 반대되는 개념
global
- 함수내에서 전역변수를 사용하기 위해 사용하는 키워드.
var = 3
def func():
global var # 외부의 var를 global 키워드를 통해 사용
var += 100
print(var)
func()
-> 103
print(var)
-> 103
람다 표현식
- 반복문이나 조건문 같은 제어문에 포함될 수 없고, 한줄짜리 표현식만으로 이뤄짐.
- 정의와 호출이 분리되어 있지 않고 람다표현식 자체를 호출.
lambda 인자 : 표현식
- 콜백함수를 만들 때 주로 사용
(lambda x: x**2)(3)
-> 9
lambda_func = lambda x:x**2 #변수를 통해 접근가능
lambda_func(3)
-> 9
mylist = [9,1,7,3,4,5,6,2,8]
mylist.sort(key = lambda x:x) # 키 값을 이용해 정렬함
mylist.sort(key = lambda x:-x) # 콜백함수
mylist.sort(key = lambda x:x%3)
mylist.sort(key = lambda x:x%2)
Comments