Function Parameters

안희수·2021년 6월 12일
0

TIL

목록 보기
13/26

함수형 프로그래밍 대부분은
Prameter(전달인자) 를 통해서 문제를 해결한다.

파리미터는 변수와는 조금 다른 개념이다.

변수에 Parameter의 값을 대입할 수는 있지만,
변수가 Parameter는 아니다.

이 점을 착안해서 파이썬의 파리미터 개념을 정리 하고자 한다.


함수를 정의 할때
default value parameter를
non-default value parameter 앞에 정의 하면 안 되는 이유

  • non default parameter follows default parameter python
    파라미터를 정의하는 순서 없이 무작위로 생성 시
    함수는 어떤 파라미터에서 어떤 값을 받아야 될지 정할 수 없기 때문

  • function 정의 시 지켜야 할 argument 순서
    • 1.positional(non-default) arguments
    • 2.default arguments
    • 3.variable length positional arguments (=*arg)
    • 4.keyword-only arguments
    • 4-1. non-default keyword-only arguments
    • 4-2. default keyword-only arguments
    • 5.variable length keyword arguments (=*kwargs)

위치 인수(positional arguments)와 가변 인수(variable length arguments)

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

ERROR ______________________________________________________
Traceback (most recent call last):
  File "main.py", line 7, in <module>
    func_param_with_var_args("정우성", "01012341234", "seoul", 20)
TypeError: func_param_with_var_args() missing 
1 required keyword-only argument: 'age'
____________________________________________________________

정상적으로 출력 됬을 시 결과

# Fiexd Code

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)

출력 결과

name=정우성
args=('01012341234', 'seoul')
age=20

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

def func_param_with_kwargs(name, age, **kwargs, address=0):
    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")

ERROR ______________________________________________________
File "main.py", line 1
def func_param_with_kwargs(name, age, **kwargs, address=0):
SyntaxError: invalid syntax
____________________________________________________________

정상적으로 출력 됬을 시 결과

# Fiexd Code

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")

출력 결과

name=정우성
age=20
kwargs={'mobile': '01012341234'}
address=seoul

위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments

def mixed_params(name="아이유", *args, age, **kwargs, address):
    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")

ERROR ______________________________________________________
File "main.py", line 1
def mixed_params(name="아이유", *args, age, **kwargs, address):
SyntaxError: invalid syntax
KeyboardInterrupt
____________________________________________________________

정상적으로 출력 됬을 시 결과

# Fiexd Code

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")

출력 결과

name=정우성
args=('01012341234', 'male')
age=20
kwargs={'mobile': '01012341234'}
address=seoul


profile
9년차 소프트웨어 개발자 (2024년 재 개편 예정입니다)

0개의 댓글