[Python] 파이썬 함수(function) 사용법 & 예제 총정리

함수(function)는 어떠한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합으로 정의할 수 있겠습니다. 이렇게 특정 코드를 묶어 하나의 함수로 사용하면 계속 재사용할 수 있기 때문에 반복적인 프로그래밍을 피할 수 있습니다. 또한 이렇게 함수를 통해 캡슐화를 진행하게 되면 유지보수 및 코드 가독성측면에서도 유리합니다. 파이썬에서는 def 라는 키워드로 함수를 정의할 수 있는데요. 이번 포스팅에서는 파이썬에서 함수를 사용하는 방법에 대해 알아보도록 하겠습니다.

 

 

 파이썬 함수(function) 사용법 - 기초 

함수 정의하기

#def 함수이름(매개변수1, 매개변수2, ...):
    # 함수 실행할 코드
    # return 반환값

def add(a, b):
    result = a + b
    return result

보통 반환타입(ex : void)을 함수 앞에 명시하는 타 프로그래밍 언어와는 달리 파이썬은 타입을 따로 기술하지는 않습니다. 왜냐하면 파이썬은 동적(dynamic) 프로그래밍 언어로 인터프리터(interpreter)가 코드를 실행하면서 타입을 인식하기 때문입니다. 그래서 파이썬에서 함수의 가장 앞에는 타입이 아닌 "def"라는 키워드가 옵니다. 위의 예제처럼 def 함수이름(인자값)의 형태로 함수를 만들고 내부 로직을 기술해 주시면 되겠습니다. 위의 예제에서는 인자값 두 개를 받아서 더한 뒤 반환하는 add 함수를 정의하였습니다.

 

 

함수 호출하기

result = add(5, 3)
print(result)

결과 : 8

 

함수를 호출할 때는 사용할 함수의 이름을 명시한 뒤, 필요한 인자값을 전달해 주시면 됩니다. 예를 들어서, 위에서 정의한 add 함수를 호출하려면 위와 같이 add(인자값1, 인자값 2)의 형식으로 해주시면 되겠죠.

 

 

매개변수와 반환값

def multiply(x, y):
    result = x * y
    return result

product = multiply(4, 6)
print(product)

결과 : 24

 

함수는 매개변수(인자값)를 받아들일 수 있고, 블록안에 정의된 로직을 수행한 뒤 값을 반환할 수 있습니다. 매개변수는 함수 내에서 사용되는 변수이며, 반환값은 함수 호출 결과로 반환됩니다. 함수 내에서 return 키워드를 사용하여 값을 반환하는데요. 이런 매개변수와 반환값은 선택사항이며 경우에 따라 사용하지 않아도 됩니다.

 

 

여러 가지 함수 예제

# 1. 전달받은 인자값을 출력하는 함수
def setValue(newValue):
    x = newValue 
    print("인자값:", x)

# 함수 호출
setValue(5)

#==================================================================#
# 2. 전달받은 2개의 인자값의 순서를 바꿔서 출력하는 함수
def swap(x,y):
    return y,x

# 함수 호출
print(swap(3,4))

#==================================================================#
# 3. 교집합 문자를 리턴하는 함수
def intersect(prelist, postlist):
    #지역변수
    result = []
    #H(0) | A(1) | M(2)
    for x in prelist:
        #x라는 글자가 postlist에 있고 x가 result에 없으면
        if x in postlist and x not in result:
            result.append(x)
    return result
    
#함수 호출
print(intersect("HAM","SPAM"))

결과 ↓

인자값: 5
(4, 3)
['A', 'M']

 

위에서 설명한 함수 사용법들로 함수 3가지를 정의해 봤습니다. 위의 예시를 참고하시면 함수를 이해하는데 도움이 될 것이라 생각합니다.

 


 

 파이썬 함수(function) 사용법 - 활용 

키워드 인자

#키워드 인자
def connectURI(server, port):
    strURL = "https://" + server + ":" + port
    return strURL

#함수 호출
print( connectURI(port="8080", server="naver.com"))

결과 : https://naver.com:8080

 

파이썬의 함수에 인자값을 보내는 방식은 두 가지가 있습니다. 하나는 위에서 계속 사용하였던 지정된 위치에 해당 파라미터가 들어가는 위치 인자값이고 다른 하나는 키워드 인자값이라는 방식입니다. 키워드 인자값은 해당 인자명에 직접 값을 넣어서 순서와 상관없이 값을 전달하는 방식입니다. 위의 예제를 보시면 매개변수 이름에 직접 값을 넣어서 전달한 뒤 사용하는 것을 보실 수 있습니다.

 

 

매개변수의 기본값

# ex1). 기본값 지정 
def greet(name="Guest"):
    return f"Hi {name}!"

message = greet()  # 매개변수를 제공하지 않음
print(message)

#==================================================================#
# ex2) 기본값 지정
def times(a=10, b=20):
    return a*b

#함수 호출
print( times() ) # 매개변수 10, 20
print( times(5) ) # 매개변수 5, 20
print( times(5,6) ) # 매개변수 5, 6

결과 ↓

Hi Guest!
200
100
30

 

파이썬에서는 함수를 정의할 때 매개변수에 기본값을 지정할 수 있습니다. 이렇게 하면 함수를 호출할 때 해당 매개변수에 값을 제공하지 않아도 됩니다. 첫 번째 예제를 보시면 매개변수를 제공하지 않았음에도 불구하고 인자값 name의 기본값인 Guest가 출력되는 것을 보실 수 있습니다.

 

반대로 함수의 기본값 지정되어있는 매개변수를 전달하게 되면 그 값으로 치환됩니다. 두 번째 예제에서 보시면 a=10, b=20으로 매개변수의 기본값으로 설정되어 있지만 함수 호출 부분에서 전달한 인자값으로 치환되는 과정을 보실 수 있습니다.  

 

 

가변 인자

# ex1) 가변인자
def sum_all(*args):
    total = sum(args)
    return total

result = sum_all(1, 2, 3, 4, 5)
print(result)

#==================================================================#
# ex2) 가변인자
def union(*ar):
    #지역변수(리스트)
    result = []
    for item in ar:
        for x in item:
            if x not in result:
                result.append(x)
    return result

#함수 호출
print( union("HAM","SPAM") )
print( union("HAM","SPAM","EGG") )

결과 ↓

15
['H', 'A', 'M', 'S', 'P']
['H', 'A', 'M', 'S', 'P', 'E', 'G']

 

만약 동일한 동작을 하는 함수인데 파라미터의 숫자만 다르다고 가정해 봅시다. 그렇다면 동일한 함수를 파라미터 숫자만 달리하여 여러 개 정의해야 할까요? 생각만 해도 매우 비효율적입니다. 그래서 파이썬에서는 가변 인자를 제공합니다. 가변인자란 인자값의 개수가 유기적으로 변하는 것을 뜻하며 * 기호를 사용해서 정의하시면 됩니다. 내장 함수 min이나 max도 이 가변인자를 사용하였기 때문에 인자가 아무리 많아도 상관없이 사용할 수 있답니다.

댓글

Designed by JB FACTORY