- Closure function: Defines another function B within function A, followed by B as the return value of a is returned directly. At this point, function B is called a closure function. In the closure function B, if the variable defined in the A function is used, the variable defined in the A function is temporarily stored until the variable is retracted by the system at the end of the B function call, enabling the variable delay release in a
For example
Put (num):
Print (num)
Wrapper ():
Num
Num +=20
Print (num)
Wrapper
Fun = put (0)
Fun ()
This function runs as follows: Runs from top to bottom until fun = put (0) statement, which is called function put, executes the function put, the output is 0,fun = wrapper, returns a function to fun, but not called. When you continue to execute program fun (), the program runs the wrapper function, since Num already has a value (nonlocal is not the local variable), so the function outputs 20
- Global: The declared variable is a global variable, and when the variable is used, the computer looks directly to the outermost part of the function for the variable existence
- nonlocal: Declaring a variable to be a non-local variable, at which time the computer does not look for the variable in the function used by the current variable, but rather to the outer layer of the function looking for a corresponding variable close to the function to declare
- Adorner: The function of the original function is augmented by the use of the @ syntax to modify functions that already existed before using the defined function directly
Advantages: No need to modify the original code, you can achieve the function of the original function of the expansion, facilitate the maintenance of late code
* * (the adorner is essentially a Python function that allows other functions to add additional functionality without any code changes, and the adorner is also a function object.) He is often used for scenarios where there is a need for facets, such as inserting logs, performance testing, transaction processing, and so on. Decorators are a great design for solving such problems, and with adorners, we can pull out a lot of similar code that is independent of the function itself and continue to reuse it.
ImportTime
ImportFunctools
defLog_time (Fun):
@functools. Wraps (Fun)
defJJ (*ARGS1,**KB):
Print (Time.strftime ("%y-%m-%d%h:%m:%s", Time.localtime ()))
returnFun (*ARGS1,**KB)
returnJj
@log_time#Now = Log_time (now)
defNow (*a):
Print (a)
Now (19,20)
#define an adorner with its own parameters
defLog (TXT):
defDe (fun):
@functools. Wraps (Fun)
defWrapper (*M,**KM):
Print (Txt,end ="')
Print (Time.strftime ("%y-%m-%d%h:%m:%s", Time.localtime ()))
returnFun (*m,**km)
returnWrapper
returnDe
@log ('the corresponding time is: ')#equivalent to Max_num = log (' Corresponding time is: ') Fun (max_num)
defMax_num (NUM1,NUM2):
Print (max (num1,num2))
Max_num (2,43)
- Get absolute Value: Print (ABS (-4))
List traversal:
def callBack (num):
Num **= 2
Return num
List1 = [x for x in range (10)]
result = Map (callback,list1)
Print (Result) #map (fun,list): Map is used to iterate through the list of lists, and each traversal automatically calls the fun function to complete the calculation of the elements resulting from this traversal, returning a map object when the traversal is over
6. List filter:
List2 = [1,3,4,54,5,4,3,35, "SDF", "DSF"]
Li = Filter (lambda x:isinstance (x,int), List2)
Print (LI) #列表过滤: Filter (fun,list) is used to iterate through the list of lists to complete the operation of saving the data that satisfies the condition and filtering (deleting) The condition according to the given filter condition. Where fun is a callback function that acts as a filter condition
7. #偏函数
Import Functools
Int2 = functools.partial (int,base = 2) #将指定的函数和函数中默认值的参数进行绑定, generate a new function, such as the default argument base binding of the INT function and int to generate a new function Int2, Int2 converting by binary at this time for data conversion
result = Int2 ("10101000010100")
Print (Result)
Python Adorner, closure function