[Python] 파이썬 함수 사용법과 예제
[python] 파이썬 함수 사용법과 예제
함수란 무엇일까?
함수란 기능을 만들어 어떠한 입력 값을 받으면 결과 값을 반환해 주는 기능을 말한다.
함수 사용 이유는 반복 적인 작업을 줄여주기 위해서 사용된다.
또한 유지 보수가 간편하다. 이제 예제를 통해 알아보자.
함수 기본 구조
1. 함수의 기본 구조는 다음과 같다.
def add(a,b): <- def 함수 이름(매개변수, 매개변수):
return a + b <- 반환 값
2. 함수를 호출 하려면 add(인수, 인수)를 넣어 호출한다.
즉 c = add(1, 2)는 1,2 인수를 add 함수에 전달(호출)한 후 add 함수의 동작이 끝난 후 return 값을 변수 c에다가 저장한다.
예제의 주석은 코드 구동 순서다.
def add(a,b): #2. add 함수에 a = 1, b = 2의 입력 값을 받는다.
return a + b #3. a + b의 값이 계산되어 리턴 된다.
c = add(1,2) #1.add함수에 각각 인수 1,2를 넣고 add(a,b) 함수를 호출한다.
print(c) #4. c의 리턴 값이 1 + 2이므로 3을 출력한다.
결과 : 3
함수 사용하지 않고 더하기
함수를 사용하는 이유에 대해 설명하기 위해
우선 함수를 사용하지 않고 숫자를 더하는 예제를 만들어보자.
일반적으로는 아래 예제처럼 만들 수 있다.
하지만 만약 더하기가 아닌 마이너스로 수정해야 한다고 치자 그럼
a = 1 + 2
b = 3 + 4
c = 5 + 6
d = 7 + 8
e = 9 + 10
의 식을 아래처럼 전부 마이너스로 바꿔줘야한다.
a = 1 - 2
b = 3 - 4
c = 5 - 6
d = 7 - 8
e = 9 - 10
현재 예제는 괜찮지만 수백 줄이 넘어가는 코드를 전부 바꾸려면 엄청난 고역일 것이다.
하지만 함수를 사용하면 저런 문제를 없앨 수 있다.
a = 1 + 2
b = 3 + 4
c = 5 + 6
d = 7 + 8
e = 9 + 10
print(a)
print(b)
print(c)
print(d)
print(e)
결과 :
3
7
11
15
19
함수 사용해서 더하기
함수를 호출해서 더하는 예제다.
어? 이게 더 복잡한 거 아니야?라고 느낄 수 있다.
하지만 a + b 더하기를 마이너스로 수정 해야 한다면
c = a + b 를 c = a - b 단 한 줄만 바꾸면 나머지를 바꿀 필요가 없다.
이렇게 유지 보수 면에서 훨씬 좋다.
def add(a,b):
c = a + b
return c
a = add(1,2)
b = add(3,4)
c = add(5,6)
d = add(7,8)
e = add(9,10)
print(a)
print(b)
print(c)
print(d)
print(e)
결과 :
3
7
11
15
19
함수 사용하는 이유
함수 사용 이유의 또 다른 보여주기 위해 숫자를 비교하는 함수를 호출 하는 예제를 만들었다.
코딩을 하면 수백 줄을 코딩 하여 기능을 만든다.
이 때 반복되는 기능이 필요 한 경우 가 있을 거다. 그럴 땐 함수에 기능을 구현해 필요 할 때마다 호출하는 방식으로 사용된다.
이렇게 되면 함수의 재활용이 가능하니 코드가 줄고 코딩 시간이 단축된다.
def compare(a,b):
inform = ""
if(a > b):
inform = "a 가 b보다 큽니다."
elif(a < b):
inform = "b 가 a보다 큽니다."
return inform
a = compare(1,2)
b = compare(4,3)
print(a)
print(b)
결과 :
b 가 a보다 큽니다.
a 가 b보다 큽니다.
함수의 반환 값은 언제나 하나다.
함수는 무조건 return 값을 하나만 반환한다.
무슨 소리냐?
예제를 보자.
return a + b
return a - b
총 두 개의 리턴 값을 반환했지만 return a - b는 무시되고 return a + b만 반환 된다.
def add(a,b):
return a + b
return a - b
c = add(1,2)
print(c)
결과 : 3
매개변수 지정해서 함수 호출하기
add(b = 1, a = 2)처럼 매개변수를 지정해서 호출 할 수 있다.
def add(a,b):
return a + b
c = add(b = 1,a = 2)
print(c)
결과 : 3
반환 값이 없는 함수
함수는 return 값이 없어도 된다.
return 값이 없는 함수를 호출 할 때는 add(1,2)처럼 그냥 생으로 출력하면 된다.
return이 없는데 결과가 나오네 라고 생각 할 수 있다.
return 값만 없는거지 함수가 엄연히 호출 되었긴 때문에
def add(a,b): 함수에 print(a + b)가 출력된다.
def add(a,b):
print(a + b)
add(1,2)
결과 : 3
입력 값이 없는 함수
함수는 입력 값이 없을 수 있다. 즉 매개변수가 없어도 된다.
매개변수가 없는 함수는 대게 간단한 문자열을 반환 해주는 용도로 사용된다.
def add():
return "danger"
a = add()
print(a)
결과 : danger
매개변수 초기 값 지정하기
함수의 매개변수에 초기 값 지정하는 것이 가능하다.
def add(a = 0 , b = 0): 처럼 인수가 안들어 오면 초기 값인 0을 사용한다.
즉 c =add(1) 은 a = 1 , b = 0(초기 값)이 더해져 1이된다.
def add(a = 0, b = 0):
return a + b
c = add(1)
print(c)
결과 : 1
lambda 사용법
지금 까지 함수를 만들 때 def를 사용해서 만들었다.
lambda도 마찬가지로 함수를 만들 수 있다.
lambda는 함수를 한 줄로 즉 간단하게 만드는데 사용된다.
주로 def를 사용 할 수 없을 때 사용된다.
add = lambda a, b: a + b
c = add(1,2)
print(c)
결과 3
이 예제는 def로 만든거다.
위에 예제 lambad와 결과가 같다.
def add(a, b):
return a + b
c = add(1,2)
print(c)
결과 3
함수안 변수는 개별이다.
add 함수 안에 있는 a변수를 print(b) 해서 출력 하려고 하면 오류가 발생한다.
왜냐하면 함수 안에 있는 변수는 함수 안에서만 사용 가능하다. 이 부분을 유의 해야한다. 함수 밖과 함수 안의 변수는 개별적인 것이다.
def add(a):
b = 0
return a + b
print(b)
결과 :
Traceback (most recent call last):
File "C:\Users\skek1\PycharmProjects\pythonProject1\test.py", line 5, in <module>
print(a)
NameError: name 'a' is not defined
댓글
댓글 쓰기