Python

함수와 매개변수

git-sun 2024. 7. 12. 22:46

함수(function)

  • 정의 ; 문장(코드)의 집합
  • 0개 이상의 매개변수가 함수에 전달될수 있다
# 함수 기본 구조
def 함수명(매개변수1, 매개변수2, ...):
    문장

# ex
print()
  • 함수 호출 시, 함수에 정의된 인자 개수보다 적거나 많은 수의 인자를 넘겨주면 예외 발생(TypeError)
def print_n(value, n):	# 2개의 매개변수
    for i in range(n):
        print(value)
        
print_n("hi")	# 1개의 매개변수만 넘겨주면 TypeError!

 

1. 가변 매개변수 함수

  • 정의 ; 매개변수를 원하는 만큼 받을 수 있는 함수
  • 제약
    • 가변 매개변수 뒤에 일반 매개변수가 올 수 없다
    • 가변 매개변수는 하나만 사용 가능
# 가변 매개변수 함수 기본 구조
def 함수명(매개변수1, 매개변수2, ..., *가변 매개변수):
    문장

 

 

2. 기본 매개변수

  • 정의 ; 매개변수를 입력하지 않았을 경우, 기본값이 세팅되는 매개변수
  • 형태 ; 매개변수=값
  • 제약
    • 기본 매개변수 뒤에 일반 매개변수가 올 수 없다
# 기본 매개변수 예
# 아래에서 sep=' '부터 flush=False까지
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
  • 주의
    • 기본 매개변수가 가변 매개변수 앞에 올 때, 기본 매개변수의 의미가 사라진다
    • 기본 매개변수가 가변 매개변수 뒤에 올 때, 가변 매개변수가 우선된다
# 기본 매개변수가 가변 매개변수보다 앞에 오는 경우
def print_number(n=2, *values):
    for _ in range(n):
        for value in values:
            print(value)
        print()

# 아래와 같이 호출하는 경우, 에러 발생(TypeError)
# 매개변수가 순서대로 입력되므로, n에는 "how", values에는 ["are", "you"]가 들어간다
# range() 함수는 숫자만 입력받을 수 있으므로, "how"가 입력되면 TypeError 발생
# 따라서, 어떤 값을 입력하지 않아도 n=2로 입력되길 기대할 수 없기에
# 기본 매개변수가 가변 매개변수보다 앞에 오는 경우는 의미가 없다
print_number("how", "are", "you")

 

# 기본 매개변수가 가변 매개변수보다 뒤에 오는 경우
def print_number(*values, n=2):
    for _ in range(n):
        for value in values:
            print(value)
        print()

print_number("how", "are", "you", 3)

# 함수 실행 결과는 다음과 같다
# how
# are
# you
# 3

# how
# are
# you
# 3

 

3. 키워드 매개변수

  • 정의 ; 이름을 직접 지정해서 값을 입력하는 매개변수
# 키워드 매개변수 예
def print_number(*values, n=2):
    for i in range(n):
        for value in values:
            print(value)
        print()
        
pirnt_number("hi", "everyone", n=3)		# n=3 부분이 키워드 매개변수!

# 함수 실행 결과는 다음과 같다

# hi
# everyone

# hi
# everyone

# hi
# everyone

 

4. 함수의 여러 호출 형태

  • 일반 매개변수는 반드시 입력해야 하고, 순서에 맞게 입력한다
    • 아래의 1번, 4번
  • 일반 매개변수는 키워드 매개변수처럼 사용할 수 있다
    • 아래의 2번, 3번
  • 키워드 매개변수 입력 시, 순서를 바꿔 입력할 수 있다
    • 아래의 3번
  • 키워드 매개변수는 선택적으로 입력할 수 있다
    • 아래의 4번
def sum_abc(a, b=10, c=100):
    print(a + b + c)

# 1. 기본 형태
sum_abc(10, 20, 30)
# 2. 모든 매개변수를 키워드 매개변수로 지정한 형태
sum_abc(a=10, b=100, c=200)
# 3. 모든 매개변수를 키워드 매개변수로 순서를 바꿔 지정한 형태
sum_abc(c=10, a=100, b=200)
# 4. 일부 매개변수만 키워드 매개변수로 지정한 형태
sum_abc(10, c=200)

# 함수 실행 결과는 다음과 같다
# 1번의 결과
# 60
# 2번의 결과
# 310
# 3번의 결과
# 310
# 4번의 결과
# 220

 

 

5. 리턴

  • 정의 ; 함수를 끝내고 호출했던 위치로 돌아가도록 하는 키워드
  • 리턴값 ; 함수의 실행 결과값
# 1. 리턴의 위치
def test1():
    print("A")
    return
    print("B")
    
test1()

# 함수 실행 결과는 다음과 같다
# B를 출력하기 전에 함수를 끝내므로 A만 출력된다
# A

 

# 2. 리턴값 지정
def test2():
    return 13

value = test2()
print(value)

# 함수 실행 결과는 다음과 같다
# 13

 

# 3. 리턴값 미지정
def test3():
    return

value = test3()
print(value)

# 함수 실행 결과는 다음과 같다
# None

 

 

 

 

참고 서적

에네르기 혼공파!!

 

 

 

반응형