본문 바로가기
Python/기본문법

Python 기본 문법 정리(4)

by rewyear 2024. 7. 17.

프로그래밍을 하다보면 특정 기능을 수행하는 code를 반복적으로 사용하는 경우가 있는데, 이를 따로 묶어 재사용하기 위한 코드의 집합을 함수(function)이라고 한다.

 

기본구조

파이썬에서 함수는 기본적으로 다음과 같은 구조를 가지고 있다.

def 함수이름(매개변수1, 매개변수2...):
    """
    함수 내용
    """
    
    return return_value
    
    
# 실제 함수 호출
ret = 함수이름(인자1, 인자2...)

 

함수는 매개변수를 통해 입력 값인 인자를 전달하고, return을 통해 출력 값을 반환한다.

함수의 기능에 따라 인자가 필요없거나, 반환 값이 필요없을 수 있다.

# 입력이 없는 함수
cnt = 1234
def get_count():
	global cnt
	return cnt

# 반환값이 없는 함수
def print_add_result(num1, num2):
    print("%d + %d = %d" %(num1, num2, num1 + num2))

# 입력과 반환 값이 모두 없는 함수
def print_greeting():
    print("안녕하세요!")
    print("메뉴를 선택해 주세요.")
    
    
print(get_count())

print_add_result(4, 6)

print_greeting()
1234
4 + 6 = 10
안녕하세요!
메뉴를 선택해 주세요.

 

다양한 함수 사용 방식

매개 변수 초기 값 지정 지정

함수의 매개변수의 초기 값을 지정할 수 있다

호출 간 해당 매개변수에 값을 전달하지 않으면 default 값이 사용된다.

def multiple(num1, num2=2): # num2의 default 값은 2
	return num1*num2
    
print(multiple(3)) # 두 개 인자 중 하나는 default 값이 지정되어 있으므로 하나의 인자만 전달하더라도 동작
print(multiple(4,5))

 

매개 변수 지정하여 호출

매개변수 이름을 사용하여 해당 매개변수의 값을 전달할 수 있다.

매개변수 순서에 상관없이 전달할 수 있는 특징이 있다.

def sub(num1, num2):
	return num1 - num2
    
sub(num2=4, num1=6) # 해당 방식과 같이 매개변수 순서 상관없이 지정하여 호출 가능

 

입력 값이 여러 개인 함수호출

매개변수 앞에 *을 사용하게 되면 전달되는 인자들을 요소로 하는 튜플 형태로 전달

이를 활용하여 인자의 갯수에 상관없이 인자를 전달하면서 함수를 호출할 수 있다.

def total(*args): # 매개변수 앞에 *을 사용하게 되면, 입력 값들을 요소로 하는 튜플로 전달
    result = 0
    for i in args:
        result += i
    return result
   
print(total(1, 3, 5, 7, 9)) # 인자 5개가 (1, 3, 5, 7, 9)형태의 하나의 튜플로 전달

 

키워드 매개변수, kwargs

매개변수 앞에 **을 사용하게 되면 딕셔너리 형태(Key=Value)로 인자가 전달.

*와 마찬가지로 인자의 갯수 상관없이 인자를 전달할 수 있다.

def print_kwargs(**kwargs):
	print(kwargs)
    
print_kwargs(a=90)
print_kwargs(kim='salary man', park='police')

 

함수 내 변수 range

함수 내 선언된 변수는 지역변수의 특성을 가지고 있다.

300x250

'Python > 기본문법' 카테고리의 다른 글

Python 기본 문법 정리(5)  (0) 2024.07.17
Python 기본 method  (0) 2024.02.17
Python 기본 문법 정리(3)  (0) 2024.02.17
Python 기본 문법 정리(2)  (0) 2024.02.17
Python 기본 문법 정리(1)  (0) 2024.02.17