작성하는 방법은 매우 간단하지만 예외를 처리해야하는 메서드가 많이 있습니다. 예외 관리는 항상 동일하므로 래퍼를 함수로 작성하여 특정 함수 호출 인스턴스를 매개 변수로 호출해야합니다. 가능한가? 이 라인을 따라인수로 함수를 인수로 전달하는 방법
뭔가 (이 비 작동 일러스트 레이 션) :
def g(h):
while True:
try:
x = h()
except:
# got an error
print ("Unexpected error. Retry.")
else:
# everything is fine
return x
def f1(x):
# do something that may fail (e.g. access a distant server)
y = (...whatever...)
return y
def f2(x,y):
# do something else that may fail (e.g. access a distant server, but different request)
z = (...whatever...)
return z
print (g(f1(3)))
print (g(f1(6)))
print (g(f2(5,'abc')))
참고 : 나는 클래스 정의를 필요로하지 않는 대답을 찾고 있어요. 또한 파이썬에서 람다 함수에 익숙하지 않지만 솔루션의 일부가 될 수 있을까요?
g 성공할 때까지 돌아 가지 않을 것입니다. –
예, 정확하게. 나는 그것을 언급 했어야했다. 실제로, 나는 최대 시도 횟수 측면에서 타임 아웃을 구현한다. 코드에서 – nekonaute
- 왜 작동하지 않습니까? havent는 아직 pyfiddle에 게시했지만, 합법적 인 것으로 보인다. - g ::에는''args''와'** kwargs''가 필요합니다. (https://stackoverflow.com/questions/36901/) 별표 - 별표 - 별표 - 매개 변수)를 사용하여'g '가'g (f1,3)'과 같은 종류의 추가 매개 변수를 취하도록 허용합니다. 'g'는 주어진 함수에 물건을 전달해야합니다 .... –