TIL 8 | Function Parameters

hjulee12·2020년 11월 21일
0

Python

목록 보기
4/9
post-thumbnail

1. 함수 인수(parameter)의 기본 형태(positional argument)

def love_you(my_name, your_name):  # 인수1: my_name, 인수2: your_name
	print(f"{my_name} loves {your_name}")
love_you("정우성", "아이유")

결과: "정우성 loves 아이유"

2. 키워드 인수(Keyword Arguments)

순서에 맞추지 않고 인수 이름으로 값을 전해주는 방법.
인수에 맞춰 직접 값을 함수에 넘기기 때문에 값이 바뀔 확률이 적고 어떤 값을 넘기는지 명확하기 때문에 가독성이 좋은 장점이 있다.

이 방식으로 인수 값을 전해주면 순서에 맞춰 값을 전해주지 않아도 된다.

def love_you(my_name, your_name):
	print(f"{my_name} loves {your_name}")
love_you(your_name = "아이유", my_name = "정우성")
    

3. Mixing positional arguments and keyword arguments

순서를 맞춰서 인수 값을 전해주는 positional arguments와 keyword arguments를 혼용하는 방법

def love_you(my_name, your_name):
	print(f"{my_name} loves {your_name}")
love_you(your_name = "아이유", "정우성")   # 오류발생

주의할 점!
keyword arguments는 순서가 바껴도 상관없지만, positional arguments 부분은 순서를 지켜줘야 한다.

4. Parameter Default Value

함수의 인수에 default 값 정의.
인수 값이 넘겨지지 않아도 default 값이 자동으로 넘겨지게 된다.

def love_you(my_name, your_name = "아이유"):
	print(f"{my_name} loves {your_name}")
love_you("정우성")

주의할 점!
default 값이 정의된 인수(default value parameter)는 언제나 default 값이 정의되지 않은 인수(non-default value parameter) 뒤에 위치해야 한다!

이유: 만일 위의 예제에서 아래와 같이 non-default value parameter가 먼저 위치한다면, love_you("정우성")으로 함수 호출 시 컴퓨터는 "정우성"을 your_namemy_name 중 어느 곳에 대입해야 할지 알 수 없게 된다

    def love_you(your_name = "아이유", my_name):
        print(f"{my_name} loves {your_name}")
    love_you("정우성")

5. 가변인수(variable length arguments)

가변인수란 인수를 원하는 만큼 받을 수 있는 함수로 *를 붙여 *args 형태로 표시하며 다음과 같은 구조를 가진다.
가변인수 뒤에는 일반 인수는 올 수 없으며, 가변인수는 하나만 사용할 수 있다.

def 함수명 (인수1, 인수2, ..., *가변인수):
    문장

예제

def func_param_with_var_args(name, age, *args):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
 
func_param_with_var_args("정우성", "01012341234", "seoul", 20)

6. 가변 키워드 인수(variable length keyword arguments)

키워드 인수와 가변 인수를 결합한 것으로 인수 앞에 **을 붙여 **kwargs의 형태로 나타내며, 가변인수와 마찬가지로 여러개의 값을 받아올 수 있으며, 인수 중 가장 끝에 위치한다.

예제

def func_param_with_kwargs(name, age, address=0, **kwargs):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)
 
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")

7. 위치 인수와 가변 키워드 인수

위치인수, 가변 키워드 인수 등이 섞여있을 때 순서는 다음과 같다.

def mixed_params(age, name="아이유", *args, address, **kwargs):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)
 
mixed_params(20, "정우성", "01012341234", "male", mobile="01012341234", address="seoul")

8.정리


<source: https://getkt.com/blog/python-keyword-only-arguments/>

profile
What you think, you become. What you feel, you attract. What you imagine, you create.

0개의 댓글