Python 函数编写
Shayne Miel
Software Architect @ Duo Security





@double_args def multiply(a, b): return a * bmultiply(1, 5)
20
def multiply(a, b): return a * bdef double_args(func): return funcnew_multiply = double_args(multiply)new_multiply(1, 5)
5
multiply(1, 5)
5
def multiply(a, b): return a * bdef double_args(func):# 定义可修改的新函数 def wrapper(a, b):# 先调用未修改的函数 return func(a, b)# 返回新函数 return wrappernew_multiply = double_args(multiply)new_multiply(1, 5)
5
def multiply(a, b): return a * bdef double_args(func): def wrapper(a, b):# 调用传入函数,但将每个参数翻倍 return func(a * 2, b * 2)return wrappernew_multiply = double_args(multiply)new_multiply(1, 5)
20
def multiply(a, b): return a * bdef double_args(func): def wrapper(a, b): return func(a * 2, b * 2) return wrappermultiply = double_args(multiply)multiply(1, 5)
20
multiply.__closure__[0].cell_contents
<function multiply at 0x7f0060c9e620>
def double_args(func): def wrapper(a, b): return func(a * 2, b * 2) return wrapperdef multiply(a, b): return a * b multiply = double_args(multiply) multiply(1, 5)
20
def double_args(func): def wrapper(a, b): return func(a * 2, b * 2) return wrapper@double_args def multiply(a, b): return a * b multiply(1, 5)
20
Python 函数编写