Adorners are defined by functions and used to decorate functions.The adorner does not change the source code and operation mode of the decorated functionHow do you achieve this effect?#-*-Coding:utf-8-*-__author__ = "MuT6 sch01ar" Import timedef Timer (func): #定义一个装饰器 def deco (): start_time = Tim E.time () func () stop_time = Time.time () print ("The Run Time is%s"% (stop_time-start_time)) return Decodef test1 (): time.sleep (3) print (' in the Test1 ') t
", " Toby "," 1qaz#edc ") #此时就要把show_name函数看成是show_name (NAME,NBSP;USER,NBSP;PWD) So, pass three parameters in ##################### ##################################################################### #version 3 The syntax used below, Allows dynamic creation of a decorated function object Defauth (func): NBSp;#print (func.__name__) #通过打印这个结果得知, Show_name function was passed in def auth_decorator (USER,NBSP;PWD):u= "Toby" p= "1qaz#edc" ifuser==u: ifpwd==p: print ("Authdone ...") func () #所以
) def wrapper (* args, **kw): print ('%s%s (): '% (text, func.__name__)) return func (*args, * * kw) return wrapper return decorator 3-layer nested decorator usage: @log (' Execute ')def now ():Print (' 2015-3-25 ')Execution Result:>>> Now ()Execute Now ():2015-3-253-Layer Nesting effect:>>> now = log (' Execute ') (now)Execute log (' execute ') first, return the decorator function,The returned function is called, and the parameter is the now function, and the ret
)) forPinchSelf.pluginsifGetAttr (p,func_name,none)]Print(Plugin_funcs)#to add a to the plug-in method in ascending orderPlugin_funcs=[p forP,priorityinchSorted (plugin_funcs,key=LambdaX:x[1],reverse=False)] returnPlugin_chain (Plugin_funcs,len (Plugin_funcs) -1,_inner_func,*arg,**Kwargs)Else: returnFunc (self,*arg,**Kwargs)returnMethodSource code Description: Similar to @filter_hook just, note wrap_func=funcs[token] arg_specs =ge Targspec (Wrap_func) [0] if l
closed? Hear me out #(1) open to extensions # Why open to extensions? # Any program, it is not possible at the beginning of the design has been thinking of all the features, and there is no need to do any updates and modifications, so we must allow the extension of the code and add new features. #(1) is closed for modification # Why should I close the changes? # because we write a function that is likely to affect other users already using this function, so the modification funct
return Inner_func 5 6 7 @outer _func # test = outer_func (test) 8 def Test (): 9 pass Focus: The seventh and eighth lines of the above code are the focus, see this syntax sugar to think of its essence: test = outer_func (test)4. Conclusion:(1). The test function before the decoration and the func of the enclosing outer function are the same;(2). The decorated test function is a reference to the inner layer function of the closure, which means that the test points to the Inn
("Continue yes/no:") if my_confirm = = ' Yes ': f (*x,**y) #注意f和inner的参数要一一对应 else:sys.exit () return inner @confirm def my_sum (*a,**b): result=0 for I in a:result+=i print (result) my_sum (1,2,3,4,5)If you add a function to the adorner, and the adorner can pass the parameter, simply add a layer of nested functions outside the original adorner, and simply illustrate:#-*-coding:utf-8-*-importsysdefjudge (default=0):def Confirm (f): definner (*x,**y): my_confirm=input ("Continue yes/no:") ifmy_
)returnIn_decmy_sum=Dec (my_sum)Print(My_sum (1, 2, 3, 4, 5, 6))Print(My_sum (1, 2, 3, 4, 5,'6')) My_average=Dec (my_average)Print(My_average (1, 2, 3, 4, 5, 6))Print(My_average (1, 2, 3, 4, 5,'6'))The result of the operation is:(3) decorative deviceAdorners are essentially the use of closures, by encapsulating code in the same part or some decorative code, for code reuse (somewhat analogous to "decorative patterns" in design patterns). Using the Python interpreter's adorner syntax, the sugar (@
follows:Hello world!7. Under the catalogue webcontent/pages index.jsp, the contents are as follows:Complete.Related instructions:A. As you can see through file Decorators.xml, I've configured only to decorate URL requests that can match the/user*, because there is a URL rewrite, so the decorations are for URLs regardless of the original path of the decorated file. For example, my Access URL is: http://localhost:9080/C2oneWeb/userAction.htm, the original useraction.htm is corresponding to pages/
, different Web servers and different Web applications can be paired, as long as they follow the WSGI specification.Flask Framework is used in the development of the app part, in the development environment we can simply use the flask built-in development with the Web server, and in the production environment with better performance of professional Web servers, such as Apache, Gunicorn and so on.2 Flask Pro
Construction Address:
Description: Flask supports the construction of URLs through view functions and parameters, and future modification URLs can be modified at once, and the default build escapes special characters and Unicode data, which we do not need to process ourselves, and are not only supported in the context but also in the template file.
#!/usr/bin/env python#-*-coding:utf-8-*-"" "# # authors:limanman# 51ctobg:http://xmdevops.bl
Ways to use SQL in your company:1. Write Django:orm (Relational object mapping),2. Write flask and other: There are two ways:(1) Native SQL: There are two options for using native sql:A. Pymysql (both Python2 and Python3 support)B. MYSQLDB (Python2 support only)(2) Sqlachemy (also an ORM framework, similar to Django's ORM)The inside of the ORM will call Pymysql or MYSQLDB, so the essence is to Pymysql and MySQLdbI.
Flask-mail can connect to the SMTP server in the configuration to send mail, if the SMTP server is not configured, will be connected to localhost by defaultI. Configuration and initialization(1) Flask application Configuration#configuration OptionsMail_server ='smtp.qq.com' #Mail ServerMail_port = 25#PortMail_use_tls = False#Transport Layer Security protocolMail_use_ssl = False#Secure Sockets Layer protocol
Flask registers the variables to the template, and flask registers the template.
When using the python Flask framework and referring to Flask Web development, we found that the Permission. FOLLOW variable can be used globally.
However, I am trying to confirm that the variable is not defined. After searching, the answ
This article gives you a detailed explanation of the decorator and recursive algorithm in python. If you need it, you can refer to it. I hope it will help you learn Python.
1. python decorators
I just got in touch with the python decorator, and I just forgot how many times I Debug and how many times I checked the information, I started to understand it. I have summarized the following explanations:
Little P has nothing to do with it. He just looks at
): print "Call Dec" Def in_dec (): print "Call In_dec" func () Retu RN In_dec #结论: Must return @decdef Test_dec (): print "Call Test_dec" Print type (TEST_DEC) Test_dec ()>>> ================================ RESTART ================================>>> Call DecThe above refers to the relationship between (the red character) function (equivalent to the object reference relationship), the assigned value of the modified function parameters must be three functions to correspond#-*-Coding:utf-8-*-def
About decorator
See these articles for details
Detailed description of adorner Layer
Http://www.cnblogs.com/nankezhishi/archive/2010/07/10/adornerlayer.html
WPF Study Notes 11: adorner)
Http://www.cnblogs.com/jacksonyin/archive/2008/04/28/1174393.html
[WPF] sorting by clicking a column header in listview
Http://www.cnblogs.com/nankezhishi/archive/2009/12/04/sortlistview.html
WPF custom controls-decorator
Http://www.cnblogs.com/Curry/archive/2009/09/16/WPFDecorator.html
Decorator Overview
Http:/
This article mainly introduces the more in-depth use of Python decorators, you can refer to the widely used decorator in python. if you have used some python web frameworks, you must be familiar with the "route () decorator, let's look at a specific case today.
To simulate a scenario, you need to capture a page. Then there are many URLs on the page to capture separately. after entering these suburls, there is still data to capture. Simply put, let's
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.