2015-09-08 31 views
9

अगर मैं एक समारोह है कि लग रहा है जैसे:समारोह डेकोरेटर से पहुँच समारोह तर्क

@app.route('/categories/id/<int:id>/edit') 
@login_required 
def edit_category(id): 
    #some code... 

और login_required डेकोरेटर इस

def login_required(f): 
    @wraps(f) 
    def wrapper(*args, **kwargs): 
     print id #given to edit_category by app.route decorator 
     return f(*args, **kwargs) 
    return wrapper 

मैं आईडी चर को दिया जाता है कैसे पहुँच सकता हूँ की तरह लग रहा login_category सजावट से app.route सजावट द्वारा एक तर्क के रूप में edit_category?

उत्तर

6

आवरण समारोह args (पहला तर्क - *args) में आने के लिए स्थितीय तर्क, और विधि kwargs (दूसरा तर्क - **kwargs) में आते हैं के लिए कीवर्ड तर्क।

args एक टुपल है, जहां पहला तत्व पहले स्थितित्मक तर्क को संदर्भित करता है, दूसरा तत्व दूसरा स्थितित्मक तर्क है।

kwargs एक शब्दकोश है, जहां कुंजी कीवर्ड (तर्क के लिए) है और मान उस कीवर्ड के लिए दिया गया मान है।

उदाहरण -

>>> def decor(func): 
...  def wrapper(*args, **kwargs): 
...    print('args - ',args) 
...    print('kwargs - ',kwargs) 
...    return func(*args, **kwargs) 
...  return wrapper 
... 
>>> @decor 
... def a(*a, **b): 
...  print("In a") 
...  print(a) 
...  print(b) 
... 
>>> a(1,2,x=10,y=20) 
args - (1, 2) 
kwargs - {'y': 20, 'x': 10} 
In a 
(1, 2) 
{'y': 20, 'x': 10} 

app.routeargs और kwargs और सही मान लेना दोनों मुद्रण द्वारा id स्थितीय तर्क या कीवर्ड तर्क के रूप में भेज रहा है कि क्या आप परीक्षण कर सकते हैं। मुझे लगता है कि यह स्थितित्मक तर्क के रूप में आ रहा है, यदि हां, तो यह args का पहला तत्व होगा।

+0

महान उत्तर, धन्यवाद :) –

संबंधित मुद्दे