질문이 2 개 있습니다. 사전에 키가 있는지 여부를 확인하는 데코레이터를 만들었습니까? 여기있어.Python- 함수 안에 데코레이터를 사용할 수 있습니까?
def check_has_key(func):
def inner(x,y): # inner function needs parameters
dictionary = {"add" : "true", "subtract" : "true"}
if dictionary.has_key("add") :
return func(x,y)
return "Add not allowed"
return inner # return the inner function (don't call it)
@check_has_key
def add(x,y):
return x+y
print add(1,2)
1) 나는 래퍼에 대한 인수로 키를 통과 한 후이 존재하는지 여부를 확인 할 수 있습니까? 예를 들면 : - 그냥 열쇠를 @check_has_ket("subtact")
으로 전달합니다.
2) 함수 안에 데코레이터를 사용할 수 있습니까? 사전에 키가 있는지 없는지를 확인해야하는 경우, 함수의 깊이가 내려간 것처럼?
편집
나는 첫 번째 질문에 대한 답을 얻었다.
def abc(a):
def check_has_key(func):
def inner(x,y): # inner function needs parameters
dictionary = {"add" : "true", "subtract" : "true"}
if dictionary.has_key(a) :
return func(x,y)
return "Add not allowed"
return inner # return the inner function (don't call it)
return check_has_key
@abc("subtract")
def add(x,y):
return x+y
print add(1,2)
하지만 내 생각에는 여전히 장식을 깊이 사용할 수 있습니까? 사전에 키가 존재하는지 또는 함수의 깊이가 없는지를 확인해야하는 경우,이 목적으로 데코레이터를 사용할 수 있습니까? 그렇지 않으면 if 조건 만 사용해야합니까?
왜 내부 함수에 사전을 정의합니까? 'dictionary.has_key'가 항상 true가 아닐까요? 그리고 어쨌든 데코레이터 기능을 만드는 데 대한 목표는 무엇입니까? 그런데 함수를 정의 할 때마다 데코레이터를 사용할 수 있습니다. – aIKid
(1) 데코레이터는 기능을 정의 할 때만 사용되며, 그와 마찬가지로 사용할 수 있습니까? 라인 또는 코드 사이의 의미입니까? (2) 하나의 함수에 여러 데코레이터가있는 경우 데코레이터가 실행되는 순서는 무엇입니까? –
아마도이 [답변] (http://stackoverflow.com/a/1594484/1672128) 데코레이터 도움이 될 수 있습니다. 읽기, 그것은 당신이 데코레이터에 대해 알아야 할 모든 것입니다. –