Python 06.함수

순서와 규칙이 바뀌지 않는 일련의 패턴을 가진 작업을 모아놓은 것.

정의

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