1

나는 다음과 같은 기능을 가지고 말할 수 있습니다 함수 호출자가 "hi"값에 할당 된 변수를 결정하지 못했습니다? 즉, 1 차 사례에서는 예외를 원하지만 2 차 및 3 차 사례에서는 예외를 원합니다. 파이썬 2.7을 사용합니다.강제 함수 호출에 사용되는 기본 값을 결정

+0

예, 드 매개 변수를 제거하고 변수가 원하는대로 할당하고 첫 번째 경우는 예외를 발생 것임이 같은 키워드 인수, 그것은 의무 될 것입니다 작동 –

답변

5

일을 안하면 keyword-only arguments 지정할 수 있습니다

def myFun(*, a=None, b=None): 
    print(a, b) 

myFun('hi') 

같이, Python2에서

TypeError: myFun() takes 0 positional arguments but 1 was given 

를 제기 Ricardo Silveira points out**kwargs을 사용하면 모든 인수를 강제로 키워드 인수로 사용할 수 있습니다.

def myFun(**kwargs): 
    a, b = kwargs.get('a'), kwargs.get('b') 
    print(a, b) 

myFun('hi') 
# TypeError: myFun() takes exactly 0 arguments (1 given) 
+0

감사 합니다이 도움이되었다! – Ohumeronen

2
def my_fun(**kwargs): 
    a = kwargs.get("a", None) 
    b = kwargs.get("b", None) 
    # have your code here... 

다음 : my_fun("hi")이 Python3에서 ...

+0

흠이 throw하지 않습니다 첫 번째 경우에는 예외입니다. – Ohumeronen

+0

TypeError : my_fun()은 정확히 0 개의 인수 (주어진 1 개)를 취합니다. 예외이므로, 정확히 쓴 사람은 아니지만 my_fun의 호출자 메서드에서 감쌀 수 있습니다. –

+0

미안합니다. 귀하의 코드와 함께하지만 unutbu에서 코드와 함께 예외를 얻을. 글쎄, 내 파이썬 버전에 따라 다르다고 생각한다. 어쨌든 고맙습니다. – Ohumeronen

1

실제로 사용자가 ** kwargs를 사용하여 원하는 모든 인수를 제공 할 수 있습니다.

def myFun(**kwargs): 
    print kwargs[a] 
    print kwargs[b] 

a 또는 b가 정의되지 않은 경우 오류가 발생하지만 그다지 도움이되지 않습니다.

값이 존재하는지 확인하여 오류를 직접 만들 수 있습니다. 예를 들어 :

def myFun(**kwargs): 
    if not kwargs.get(a): 
    raise Exception('a is not here!') 
    if not kwargs.get(b): 
    raise Exception ('b is not here!') 
    print kwargs[a], kwargs[b] 
+0

고맙습니다. 나는 새로운 것을 배웠다 :-) – Ohumeronen

+0

'NameError : 글로벌 이름 'a'is not defined' –