개발 이야기/Python

Python - 13. 함수

Crazy Lazy 2021. 7. 23. 21:52

1. 함수의 정의 및 특징.

- 특정한 반복되는 패턴이 있을 경우 이를 간편하게 사용하고자 사용.

- 입력값이 있거나 없을 수 있음.

- 반환값이 있거나 없을 수 있음.

- 함수 안에서 사용되는 변수는 지역변수. (함수 밖의 동일한 명칭의 변수와 값을 공유하지 않음)

# 함수 사용법.
def 함수명(매개변수):
    수행 내용


# 함수 사용 예시 - 입력값 존재, 반환값 존재.
def add(a, b):
    return a + b

a=1
b=2
c=add(a, b)
print(c)	# 결과 : 3


# 함수 사용 예시 - 입력값 미존재, 반환값 존재.
def hi1():
    return 'hi'

d=hi1()
print(d)	# 결과 : hi


# 함수 사용 예시 - 입력값 존재, 반환값 미존재.
def yn(a):
    if len(a) > 0:
        print('yes')
    else:
        print('no')

e=yn('what')	# 결과 : yes
print(e)	# 결과 : None


# 함수 사용 예시 - 입력값 미존재, 반환값 미존재.
def hi2():
    print('hi')

f=hi2()		# 결과 : hi
print(f)	# 결과 : None

 

2. 매개변수 활용.

- 매개변수에 초기 값 설정 가능.

- * 를 매개변수 앞에 붙이면 tuple 로 변환하여 받아짐.

- ** 를 매개변수 앞에 붙이면 dict 로 변환하여 받아짐.

# 매개변수 초기값 설정. (초기 값 설정 시 설정된 매개변수가 뒤에 위치해야 함)
def add2(a,b=0):
    return a + b

add2(3,2)		# 결과 : 5
add2(3)			# 결과 : 3


# 동적 입력 수량일 때 함수 사용법. (매개변수에 * 를 붙이면 tuple 로 변환하여 받아줌)
def add3(*args):
    result = 0
    for i in args:
        result += i
    return result

add3(1,2)		# 결과 : 3
add3(1,2,3,4)		# 결과 : 10


# 키워드 파라미터를 이용한 함수. (매개변수에 ** 를 붙이면 dict 로 변환하여 받아줌)
def printk(**k):
    print(k)

printk(a=1, b=2)	# 결과 : {'a': 1, 'b': 2}

 

3. 함수 활용.

- 함수 호출 시 매개변수 위치가 모호할 땐 매개변수 명에 값을 선언하는 방식으로 호출 가능.

- 반환 값을 tuple 로 결과값 반환 가능.

- return 을 명시하여 함수 즉시 종료 가능.

- lambda 를 이용하여 함수를 한 줄로 표현 가능.

# 매개변수 지정 호출 기능. (순서 상관없이 지정 매개변수에 인자 전달 가능)
def minus(a, b):
    return a - b

minus(3,7)		# 결과 : -4
minus(b=3,a=7)		# 결과 : 4
minus(a=3,b=7)		# 결과 : -4


# 다중 반환 함수. (tuple 로 결과 값 반환)
def add_and_minus(a,b):
    return a + b, a - b

add_and_minus(13, 2)	# 결과 : (15, 11)


# 즉시 종료
def abc(a):
    if a=='b':
        return
    print('abc')

abc('a')		# 결과 : 'abc'
abc('b')		# 결과 : (아무것도 출력되지 않음)


# lambda. (함수를 한 줄로 간단히 표현, lambda 인자 : 수행내용)
add4 = lambda a, b: a+b
result = add4(1,2)
print(result)	# 결과 : 3