English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python 기본 강의

Python 흐름 제어

Python 함수

Python 데이터 타입

Python 파일 작업

Python 객체와 클래스

Python 날짜와 시간

Python 고급 지식

Python 참조 매뉴얼

Python 함수 매개변수

파라미터

서버사용자 정의 함수본문에서는 함수 정의 및 호출에 대한 지식을 배웠습니다. 함수 호출 방법을 몰라서 예측할 수 없는 오류가 발생할 수 있습니다. 아래는 예시입니다.

def greet(name, msg):
    """이는 인사하는 함수입니다
    name, msg 두 개의 파라미터가 있습니다"""
    print("Hello", name + ', '' + msg)
greet("Monica", "Good morning!")

출력 결과

Hello Monica, Good morning!

greet() 함수는 두 개의 파라미터를 가집니다.

이 함수는 두 개의 파라미터를 사용하여 호출되었기 때문에, 함수가 정상적으로 실행되었으며 오류가 발생하지 않았습니다.

参数의 개수가 다를 때 호출하면, 인터프리터는 오류 메시지를 표시합니다. 아래는 이 함수의 호출 방법으로, 단일 파라미터를 사용하는 경우와 파라미터를 사용하지 않는 경우를 실행한 후 각각 표시된 오류 메시지를 보여줍니다.

>>> greet("Monica") # 하나의 매개변수만 전달
TypeError: greet() missing 1 required positional argument: 'msg'
>>> greet() # 아무 매개변수도 전달하지 않음
TypeError: greet() missing 2 required positional arguments: 'name' and 'msg'

변수 함수 매개변수

지금까지 함수는 고정된 수의 매개변수를 가지고 있었습니다. Python에서는 함수를 정의할 때 변경 가능한 수의 매개변수를 가질 수 있는 다른 방법도 있습니다.

이런 유형의 세 가지 다른 형식을 소개합니다.

Python 기본 매개변수

Python에서 함수 매개변수는 기본값을 가질 수 있습니다.

매개변수에 기본값을 제공하기 위해 대입 연산자 (=)를 사용할 수 있습니다. 이는 예제입니다.

def greet(name, msg="아침하세요!"):
    """
    이 함수는 메시지를 제공한 사람에게 인사를 합니다.
    메시지를 제공하지 않으면,
    그렇지 않으면 "아침하세요!"으로 설정됩니다.
    """
    print("이렇게", name + ', '' + msg)
greet("장산")
greet("리시", "지금은 어떻게 지내세요?")

출력 결과

이렇게, 장산, 아침하세요!
이렇게, 리시, 지금은 어떻게 지내세요?

이 함수에서 매개변수 name은 기본값이 없으므로 함수 호출 시 name 매개변수에 값을 전달해야 합니다.

반면에 매개변수 msg의 기본값은 "Good morning!"입니다. 따라서 함수 호출 시 값을 전달하지 않아도 됩니다. 호출 시 값을 전달하면 기본값을 대체합니다.

함수 내의 매개변수들은 기본값을 가질 수 있는 수가 제한적이지만, 기본값이 설정되면 기본값의 오른쪽에 있는 모든 매개변수들도 기본값을 가지고 있어야 합니다.

이렇게 하면 비표준 매개변수는 표준 매개변수 뒤에 오지 않습니다. 예를 들어, 위의 함수 헤더를 다음과 같이 정의하면:

def greet(msg = "Good morning!", name):

다음과 같은 오류 메시지를 받게 됩니다:

SyntaxError: non-default argument follows default argument

Python 키워드 매개변수

함수에 특정 값을 전달할 때, 이 값들은 그 위치에 매개변수로 할당됩니다.

예를 들어, 위의 greet() 함수를 greet("Bruce", "How do you do?")로 호출하면, 값 "Bruce"가 매개변수에 할당됩니다.name이제 "How do you do?"를 msg에 할당했습니다.

파이썬은 키워드 매개변수를 사용하여 함수를 호출할 수 있습니다. 이 방식으로 함수를 호출할 때 매개변수의 순서(위치)를 변경할 수 있습니다. 이 함수에 대한 이후 호출은 모두 유효하며 동일한 결과를 생성합니다.

# 2개 키워드 매개변수
greet(name="Bruce", msg="How do you do?")
# 2개 키워드 매개변수, 매개변수 순서 변경
greet(msg="How do you do?", name="Bruce") 
#1 개 위치 매개변수, 1 개 키워드 매개변수
greet("Bruce", msg="How do you do?")

그러나 우리는 함수 호출 중에 위치 매개변수와 키워드 매개변수를 혼합할 수 있습니다. 그러나 우리는 키워드 매개변수가 위치 매개변수 이후에 따라야 한다는 점을 기억해야 합니다.

키워드 매개변수 이후에 위치 매개변수를 두면 오류가 발생합니다. 예를 들어, 함수 호출은 다음과 같습니다:

greet(name="Bruce","How do you do?")

오류가 발생할 수 있습니다:

SyntaxError: non-키워드 매개변수 이후 키워드 매개변수

파이썬 임의 매개변수

때로는 함수에 전달될 매개변수의 수를 미리 알 수 없습니다. 파이썬은 매개변수 수가 불확정인 함수 호출을 통해 이러한 상황을 처리할 수 있게 합니다.

함수 정의에서, 우리는 매개변수 이름 앞에 스타일(*)를 사용합니다.*)를 사용하여 이러한 매개변수를 나타냅니다. 이는 예제입니다.

def greet(*names):
    """이 함수는 인사를 받는 대상으로
        튜플 목록에 있는 모든 사람."""
    # 이름은 매개변수를 가진 튜플입니다
    for name in names:
        print("Hello", name)
greet("Monica", "Luke", "Steve", "John")

출력 결과

헬로 몬리카
헬로 루크
헬로 스티브
헬로 홈

여기서, 우리는 여러 가지 매개변수를 가진 함수를 호출했습니다. 이 매개변수들은 함수에 전달하기 전에 튜플로 포장됩니다. 함수 내에서, 우리는 for 루프를 사용하여 모든 매개변수를 가져옵니다.