2016-07-19 6 views
4

을 필요로 파이썬의 내장이 같은 sorted() 기능 :분류 않는 이유는()의 주요 매개 변수는의 서명을 검사하는 경우 키워드 인수

import inspect 
print(inspect.signature(sorted)) 

서명은 다음과 같습니다 (iterable, key=None, reverse=False). 당신이 key 인수 키워드 key=을 필요로하지 않고 iterable 인수 후 key 인수를 제공 할 수처럼 here를 인수 위치 및 선택적 인수에 대한 이해를 바탕으로

, 그것은 보인다. 그러나 key 인수를 전달할 때는 항상 key=을 지정해야합니다. 왜 그런가요?

은 이해 당신은 reverse=True를 지정할 수 있지만, 어떤 key 인수하지 않고, 당신이에 대한 키워드를 필요 싶지만, 당신은 key를 제공 할 때 당신이 key=를 지정해야 할 것입니다 왜 이해가 안 원한다면 .

답변

2

Python issue 26729, iterable 위치는 전용 및 keyreverse 키워드 전용임을 표시하기 위해 필요한 /* 누락 sorted.__text_signature__에서의 에러이다. 패치는 Raymond Hettinger에게 배정 된 패치 리뷰에 있습니다. 패치 버전이 출시되면 서명은

(iterable, /, *, key=None, reverse=False) 
+0

으로 표시됩니다.이 스레드는 많은 혼란을 해결합니다. –

+0

사실, 이제는 더 혼란 스럽습니다. 현재 서명이 말하는 방식대로 기능을 작동시키지 않는 것이 어떻습니까? 함수가 키워드 전용 인수와 함께 작동하도록 만드는 요지는 무엇입니까? –

+0

@ user123123123 :'sorted'와'list.sort'는'cmp' 인자를 취하기 위해 사용되었습니다. 그것이 제거되었을 때'key'와'reverse' 키워드 만 사용하면'cmp'를 사용하려고하는 코드에 더 명확한 오류를줌으로써 전환을 도왔습니다. 또한 인터페이스를 쉽게 변경하고 인수가 오는 순서를 기억할 필요가 없습니다. – user2357112