본문 바로가기

programming/python

[ python 친해지기 #11 ] 파이썬 함수 사용법

[ python 친해지기 #11 ] 파이썬 함수 사용법

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 파이썬 친해지기 시간으로 파이썬에서 함수를 사용하는 방법에 대해 알아보겠습니다.

 

천천히 따라오시면 함수와 금방 친해지실 겁니다.

 

python-logo
파이썬 로고


함수란?

 

일반적으로 함수는 입력값에 따른 출력값이 변하는 것이라고 알고 있을 겁니다.

 

프로그래밍에서의 함수도 같은 동작을 하며 사용하는 목적은 반복적으로 수행해야 할 동작을 함수로 정의해서

 

사용할 때마다 코드를 반복 작성하는 것을 방지하는 역할을 합니다.

 

또한 함수를 기능별로 작성해 두면 코드를 살펴볼 때 가독성도 좋아지고 어떤 방식으로 돌아가는지 파악하기 쉽습니다.


함수의 구조

 

def 함수이름(매개변수): # 매개변수 생략 가능
    수행할 동작
    수행할 동작
    수행할 동작
    return 변수  # return 생략 가능

 

함수를 정의할 때도 역시 들여쓰기를 신경 써주셔야 합니다.

 

간단한 예제를 보면서 함수의 구조에 대해 알아봅시다.

 

# 매개변수가 없는 함수 정의
def bye():
    return 'bye'

# 매개변수가 있는 함수 정의
def bye_name(str):
    return 'bye ' + str

# return이 없는 함수 정의
def hi():
    print("hi")

# 함수 사용 방법
a = bye()
print(a)
print(bye_name('심심한 코딩쟁이'))
hi()

# 출력 결과
bye
bye 심심한 코딩쟁이
hi

 

리턴값이 존재하는 함수는 변수에 리턴값을 받아서 사용할 수 있고 리턴값이 없는 함수는 바로 호출하시면 됩니다.

 

그리고 매개변수가 필요한 함수에는 알맞은 인수를 함수에 넣어서 호출해야 합니다.

 


키워드 매개변수 kwargs

 

함수의 매개변수를 정해놓지 않고 호출할 때 인수로 입력되는 것들을 딕셔너리로 사용할 수 있도록해주는 매개변수이다.

 

예제를 보면서 살펴봅시다.

 

# 키워드 매개변수를 사용한 함수
def show_kwargs(**kwargs):
    print(kwargs)

show_kwargs(name = 'kim')
show_kwargs(name = 'kim', age = 19)
show_kwargs(name = 'kim', age = 19, gender = 'male')

# 출력 결과
{'name': 'kim'}
{'name': 'kim', 'age': 19}
{'name': 'kim', 'age': 19, 'gender': 'male'}

 

출력 결과를 보면 '변수명 = 값'과 같은 형태로 입력한 인수들이 함수 내에서 딕셔너리의 형태로 

 

존재하는 것을 볼 수 있다.


랜덤한 개수의 매개변수를 받아들이는 함수

 

코드를 작성하다 보면 함수의 매개변수로 몇 개가 들어갈지 결정하기 애매한 순간이 있습니다.

 

이럴 때 사용할 수 있는 좋은 방법이 있는데 예제를 통해 살펴봅시다.

 

# 랜덤한 개수의 매개변수를 가진 함수
def add(*args):
    result = 0
    for x in args:
        result += x
    return result

print(add(1,3,5,7,9))

# 출력 결과
25

# 특정 매개변수도 같이 사용 가능
def add(special, *args):
    result = 0
    for x in args:
        result += x
    return result + special

print(add(50,1,3,5,7,9)) # 순서대로 매개변수에 대입됨
# 출력 결과
75

매개변수를 지정하는 함수 호출

 

매개변수를 지정하지 않고 입력하면 순서대로 대입되지만 매개변수를 직접 지정해 주는 호출 방식도 있다.

 

# 매개변수를 지정해 호출하는 방법
def concatenate(a, b):
    return a + ' ' + b

print(concatenate('bye', 'good'))
print(concatenate(b='bye', a='good'))

# 출력 결과
bye good
good bye

매개변수에 디폴트값 설정하기

 

함수를 정의할 때 매개변수에 디폴트값을 설정해 주면 호출할 때 매개변수값을 입력하지 않아도 호출이 가능하고

 

매개변수값을 넣어주면 값이 대입됩니다. 예제로 살펴보시죠.

 

# 매개변수에 디폴트값 설정하기
def hello(name = '심심한 코딩쟁이'):
    print('안녕하세요. ' + name + '입니다.')

hello()
hello('홍길동')
# 출력 결과
안녕하세요. 심심한 코딩쟁이입니다.
안녕하세요. 홍길동입니다.

 

주의할 점은 디폴트값을 설정할 매개변수가 있다면 항상 맨 뒤에 설정해주어야 합니다.


함수 외부에 존재하는 변수의 값 변경하기

 

원초적인 방법으로는 함수에서 리턴값을 받아서 변경하고자 하는 변수에 직접 대입하는 방법이 있고

 

global 명령어를 사용하는 방법이 있습니다. 예제로 만나봅시다.

 

# return을 사용해 함수 범위 밖 변수의 값 변경
def plus_5(x):
    x += 5
    return x

x = 1
plus_5(x)
print(x)
# 출력 결과
1

x = plus_5(x)
print(x)
# 출력 결과
6

 

# global 명령어를 사용해 함수 범위 밖 변수의 값 변경하기
def plus_5():
    global x
    x += 5
    return x

x = 1
plus_5()
print(x)
# 출력 결과
6

 

함수는 함수 그 자체만으로 사용할 수 있도록 설정하는 게 좋습니다. 독립적인 함수가 사용하기 좋은 함수입니다.

 

가급적이면 global 명령어를 사용해서 함수 외부의 변수 값을 변경하는 방법은 사용하지 말고

 

리턴 값을 이용해 직접 대입하는 방식을 사용합시다.


여기까지 파이썬 함수 사용법에 대해서 알아보았습니다.

 

함수를 잘 사용하면 코드의 가독성이 올라가고 같은 코드를 중복해서 작성할

 

필요도 없으니 능률 또한 올라갑니다. 어떠한 기능을 만들기 위해 10줄의 코드가 필요하다면

 

그 기능을 3번 사용하려고 30줄의 코드를 작성하는 것보다 함수로 만들어두고

 

함수를 3번 호출하는 것이 효율적인 방법이기 때문입니다.

 

함수를 잘 사용하는 것도 프로그래밍 실력의 일부분입니다.

 

각자 원하는 기능을 함수로 구현해 보면서 실력을 쌓아봅시다.

 

다음시간에 만나요. 감사합니다.

반응형