2012-09-11 1 views
3

spam 함수의 서명이 spam(ham=None)이라고 가정합니다. 실제로이 세 가지 대안 중 어떤 사용kwarg 기본값이 명시 적으로 전달되었는지 여부와 파이썬 함수가 어떻게 결정할 수 있습니까?

spam() 
spam(None) 
spam(ham=None) 

방법 spam 찾을 수 있습니다 : 다음 세 가지 호출은 모두 값 None이 가지고 spam의 네임 스페이스의 지역 변수 ham의 원인이됩니다?

+2

왜 알아야합니까? –

+1

왜 내가 알아야 할 필요가 있는지 알아야합니까? – kjo

+1

@BrenBarn이 설명하는 이유 때문에 악의적 인 일입니다. –

답변

7

수 없습니다. This question은 데코레이터를 사용하여 함수를 랩핑하고 전달 된 인수를 속성으로 설정하는 방법을 설명합니다. 그러나 외부로부터의 도움없이 spam에서 찾을 방법이 없습니다. **kwargs을 허용하는 함수로 호출을 가로 채어 정보를 저장해야합니다.

그러나이 작업을 수행 할 때는주의해야합니다. 인수를 전달하는 다른 방법은 이며, 동일하게 작동하려면이라고 가정합니다. 그들이 다르게 작동하게하는 무언가를한다면, 당신은 당신의 기능을 사용하려고하는 많은 사람들을 혼란스럽게 할 것입니다.