Assignment#5 [Python] Function Parameters

신승호·2021년 4월 15일
0

Assignment

목록 보기
6/8
post-thumbnail

Function Parameters

1. 함수를 정의 할때 default value parameternon-default value parameter 앞에 정의 하면 안 되는 이유에 대해 생각해보시고 블로깅 해주세요.

[정답]

default value parameternon-default value parameter 앞에 선언하면 syntax error 발생

def love_you(my_name = "정우성", your_name): 
    print(f"{my_name} loves {your_name}") 
`
    love_you("정우성")
`
Traceback (most recent call last):   
    File "python", line 1 
SyntaxError: non-default argument follows default argument

2. 위치 인수(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)
  • 주어진 함수 입력 시 syntax error 발생
Traceback (most recent call last):
  File "/Users/shinisgood/Documents/1.py", line 6, in <module>
    func_param_with_var_args("정우성", "01012341234", "seoul", 20)
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'

[정답]

  • *args정해지지 않은 수parameter를 받는다.
  • 그렇기 때문에, *args맨 마지막에 위치해야한다.
def func_param_with_var_args(name, age, *args):   		  # "*args" 는 중간에 위치하면 에러가 나기 때문에 맨뒤로 옮겨주고
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
`
func_param_with_var_args("정우성", 20, "01012341234", "seoul")     # "*args"에 맞춰 인수 위치 또한 바꿔준다.
  • 아래와 같이 출력
name=정우성
args=('01012341234', 'seoul')
age=20

3. 가변 키워드 인수 (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")
  • 주어진 함수 입력 시 syntax error 발생

[정답]

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

[설명]

  • 아래 순서대로 parameter 가 나와야함
def func(
1. Regular Positional Arguments,				# age - 20
2. Default Arguments,						# name="아이유" 
3. Variable Length Positional Arguments,			# *args - "정우 성", "01012341234", "male"
4. Keyword-only Argument or Keyword-only Argument with default,	# address - address="seoul"
5. Variable Length Keyword Arguments )				# **kwargs - mobile="01012341234"
profile
신승홉니다

0개의 댓글