Python

[Python] 파이썬 함수 사용법과 예제

Let it out 2024. 2. 7. 16:33

함수란?

함수란 기능을 만들어 어떠한 입력 값을 받으면 결과 값을 반환해 주는 기능을 말한다.
 
입력 값과 결과 값이 없는 함수도 있다.
 
함수 사용 이유는 반복 적인 작업을 줄여주기 위해서 사용된다.
 
 
 
 
 

함수 기본 구조

함수의 기본 구조는 다음과 같다.
 
매개변수 a, b의 값을 받아서 return 으로 반환 값을 보내주는 구조다.
def add(a,b): # def 함수 이름(매개변수, 매개변수):
    return a + b # 반환 값
 
 

함수 호출

함수를 호출 하려면 add(인수, 인수)를 넣어 호출한다.
 
add 함수를 호출하는 예제다. c라는 변수에 add 함수의 리턴 값을 넣는다.
 c = add(1, 2)
 
 
 
함수를 작성하고 호출하는 전체 코드다. 주석에 적힌 순서를 잘봐라.
def add(a,b):       # 2. add 함수에 a = 1, b = 2의 입력 값을 받는다.
    return a + b    # 3. 1 + 2의 값이 계산되어 리턴 된다.

c = add(1,2)        # 1. add 함수에 인수 1,2를 넣고 add(a,b) 함수를 호출한다.
                    # 4. add 함수의 리턴 값을 c변수에 넣는다.
                    
print(c)            # 5. c의 리턴 값 3을 출력한다.
결과 : 3
 
 
 

함수 사용하지 않고 더하기

함수를 사용하는 이유에 대해 설명하기 위해, 우선 함수를 사용하지 않고 숫자를 더하는 예제를 만들어보자.
 
일반적인 방법으로 아래 예제처럼 만들 수 있다.
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)
 
 
더하기가 아닌 마이너스로 수정하려면 식을 전부 플러스에서 마이너스로 일일이 바꿔줘야한다.
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)
 
 
현재 예제는 몇줄 밖에 없어서 괜찮지만 수백 줄이 넘어가는 코드를 전부 바꾸려면 엄청난 고역일 것이다.
 
이때 함수를 사용하면 일일히 수정 할 필요가 없다.
 

 

 

함수 사용해서 더하기

함수를 호출해서 더하는 예제다.
 
플러스를 마이너스로 수정 해야 된다면 c = a + bc = 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
 
 
 

함수 사용하는 2번째 이유

함수 사용하는 또 다른 이유를 보여주기 위해  숫자 비교 함수를 만들고 호출 하는 예제를 만들었다.
 
코딩을 하다보면 반복되는 기능이 필요 한 경우 가 있을 거다.
 
그럴 땐 함수에 기능을 구현해 필요 할 때마다 호출하는 방식으로 사용하면된다.
 
함수의 재활용이 가능하니 코딩 시간이 단축되고, 가독성도 훨씬 좋아진다.
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)
c = compare(10,11)
d = compare(15,20)

print(a)
print(b)
print(c)
print(d)
결과 : 
b 가 a보다 큽니다.
a 가 b보다 큽니다.

b 가 a보다 큽니다.

b 가 a보다 큽니다.

 
 
 

함수의 반환 값은 언제나 하나다.

함수는 무조건 return 값을 하나만 반환한다.
 
아래 예제에서 총 두 개의 return 값을 반환했지만 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이 없는데 결과가 나오네 라고 생각 할 수 있다.
 
return 값만 없는거지 함수는 엄연히 호출 되었기 때문에 함수 내부의 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는 함수를 한 줄로, 즉 간단하게 만드는데 사용된다.
 
주로 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 함수 안에 있는 변수 b를 함수밖에서 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

반응형