py
**kwargs, funtion(input)
jm_p_op
2023. 11. 13. 18:37
https://www.youtube.com/watch?v=eUEmOHrHga8
내용을 읽어보는 도중 문득 들은 생각 input값에서 a,b,c,d값이 딕셔너리의 순서대로 나오는것 아닐까란 생각에 테스트를 진행한다.
def fun1(a,c,b,d):
print(a,b,c,d)
test={"c":3,"a":1,"b":2,"d":4}
fun1(test)
funt1(c=3,a=1,b=2,d=4)
#1 2 3 4
#1 2 3 4
순서에 상관없이 값을 지정해준다.
fun1(1,2,3,b=4)
fun1을 정의할때 a,c,b,d순으로 정의가 된다.
즉 a=1, c=2, b=3 ,b=4 가 됨으로 다음과 같은 에러가 뜬다
Traceback (most recent call last):
File "c:\Users\jakep\Desktop\sparta\py\kwargs_test.py", line 7, in <module>
fun1(1,2,3,b=4)
TypeError: fun1() got multiple values for argument 'b'
fun1(a=1,2,3,4)
초반에 a=1로 인풋값으로 들어가면서 뒤에 2,3,4값도 해당 키값을 설정해줘야 함으로 다음과 같은 에러가 뜬다.
File "c:\Users\jakep\Desktop\sparta\py\kwargs_test.py", line 7
fun1(a=1,2,3,4)
^
SyntaxError: positional argument follows keyword argument
함수에서 인자값을 설정해둔다면 함수를 쓸때 input값이 없을시 그 값으로 돌게 된다.
def fun1(a,c,b,d=5):
print(a,b,c,d)
test={"c":3,"a":1,"b":2,"d":4}
fun1(**test)
fun1(1,2,3)
##1 2 3 4
##1 3 2 5