나는 다음과 같은 기능을 가지고 말할 수 있습니다 함수 호출자가 "hi"값에 할당 된 변수를 결정하지 못했습니다? 즉, 1 차 사례에서는 예외를 원하지만 2 차 및 3 차 사례에서는 예외를 원합니다. 파이썬 2.7을 사용합니다.강제 함수 호출에 사용되는 기본 값을 결정
답변
일을 안하면 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)
감사 합니다이 도움이되었다! – Ohumeronen
def my_fun(**kwargs):
a = kwargs.get("a", None)
b = kwargs.get("b", None)
# have your code here...
다음 : my_fun("hi")
이 Python3에서 ...
흠이 throw하지 않습니다 첫 번째 경우에는 예외입니다. – Ohumeronen
TypeError : my_fun()은 정확히 0 개의 인수 (주어진 1 개)를 취합니다. 예외이므로, 정확히 쓴 사람은 아니지만 my_fun의 호출자 메서드에서 감쌀 수 있습니다. –
미안합니다. 귀하의 코드와 함께하지만 unutbu에서 코드와 함께 예외를 얻을. 글쎄, 내 파이썬 버전에 따라 다르다고 생각한다. 어쨌든 고맙습니다. – Ohumeronen
실제로 사용자가 ** 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]
고맙습니다. 나는 새로운 것을 배웠다 :-) – Ohumeronen
'NameError : 글로벌 이름 'a'is not defined' –
예, 드 매개 변수를 제거하고 변수가 원하는대로 할당하고 첫 번째 경우는 예외를 발생 것임이 같은 키워드 인수, 그것은 의무 될 것입니다 작동 –