나는 같은 것을 할 필요가 :특별 사용은
def func1(a, *args, b="BBB", **kwargs):
print "a=%s b=%s args=%s kwargs=%s" % (a, b, args, kwargs)
그래서 다음과 같이 호출하면 것을 :
a=AAAA b=BBB args=() kwargs={'h': 'HHH', 'j': 'JJJ'}
그러나 :
func1("AAAA", h="HHH", j="JJJ")
출력을 생성합니다 *args
뒤에 기본 명명 된 인수를 넣을 수 없습니다. (SyntaxError: invalid syntax
)
- 왜 허용되지 않습니까?
- 이것을 구현할 수있는 판독 가능한 방법이 있습니까? 내가 아는 유일한 방법은
b=kwargs.pop("b", "BBB")
이지만이 방법은 읽기 쉽지 않습니다. 나는 그것이 속한 함수 호출 정의에 이것을 갖고 싶어한다 : 이것은 항상이 기본값이거나 사용자가 지정한 값을 갖는 매개 변수이다.def func1(a, b="BBB", *args, **kwargs): print "a=%s b=%s args=%s kwargs=%s" % (a, b, args, kwargs)
을하지만은이 호출 의미 :
편집
나는 args
의 앞에 b
을 넣을 수
func1("AAAA", "CCC", h="HHH", j="JJJ")
를 할당 "CCC"
b
에, 내가 할 하지. b
을 원하는 arg가 아닌 possitional arg로 지정합니다.
* args 앞에 b = 'BBB'를 넣지 않는 이유는 무엇입니까? – djc
제발, 제 편집 참조 – dangonfast