2016-10-21 2 views
-1

왜이 코드에서이 오류가 발생합니까?가변 인수를 사용하는이 코드가 왜 TypeError를 제공합니까?

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: fun() got an unexpected keyword argument 'x' 
+1

함수가 선택적 키워드 인수를 허용하지 않기 때문입니다. 나는 함수의 서명에'b' 앞에 별표 2 개를 넣고 싶다고 생각합니다. –

+0

아마도 당신은'def fun (a, ** b) :' – L3viathan

답변

6

귀하의 기능은 전혀 키워드 인수를 유일한 위치 인수하지 않습니다 코드 나는이 오류가 실행

def fun(a,*b): 
    print(a,b) 
fun(1,x=4,y=5) 

. *varargs 구문은 추가 위치 인수 만 캡처합니다 (name= 접두어 없음).

키워드 인수 구문을 제거하고 위치 인수 만 전달하십시오. 또는은 키워드 인수를 사용하도록 함수를 업데이트합니다.

다음 작품 :

fun(1, 4, 5) # b will be set to (4, 5) 

또는 **c을 추가하거나 기능 서명과 유사한 키워드 **varkwargs 이름이 특정 예를 들어

def fun(a, *b, **c): 
    print(a, b, c) 

fun(1, x=4, y=5) # prints 1() {'x': 4, 'y': 5} 

*b 인수는 돈 때문에 삭제 될 수 있습니다 실제로 여기에 하나 이상의 위치 인수를 전달합니다.

관련 문제