标签:adp ndk time cifs set vsc roi 函数返回 conf
# 定义一个外部函数 def func_out(num1): # 定义一个内部函数 def func_inner(num2): # 内部函数使用了外部函数的变量(num1) result = num1 + num2 print("结果是:", result) # 外部函数返回了内部函数,这里返回的内部函数就是闭包 return func_inner # 创建闭包实例 f = func_out(1) # 执行闭包 f(2) f(3) 闭包可以保存外部函数内的变量,不会随着外部函数调用完而销毁。
闭包可以保存外部函数内的变量,不会随着外部函数调用完而销毁。
# 外部函数 def config_name(name): # 内部函数 def say_info(info): print(name + ": " + info) return say_info tom = config_name("Tom") tom("你好!") tom("你好, 在吗?")
# 定义一个外部函数 def func_out(num1): # 定义一个内部函数 def func_inner(num2): nonlocal num1 # 告诉解释器,此处使用的是外部变量a # 修改外部变量num1 num1 = 10 # 内部函数使用了外部函数的变量(num1) result = num1 + num2 print("结果是:", result) print(num1) func_inner(1) print(num1) # 外部函数返回了内部函数,这里返回的内部函数就是闭包 return func_inner # 创建闭包实例 f = func_out(1) # 执行闭包 f(2)
# 添加一个登录验证的功能 def check(fn): print("装饰器函数执行了") def inner(): print("请先登录....") fn() return inner # 装饰器 def comment(): print("发表评论") # 使用装饰器来装饰函数 comment = check(comment) comment() # 简写:使用语法糖方式来装饰函数 @check def comment(): print("发表评论") comment()
import time # 装饰器函数 def get_time(func): def inner(): begin = time.time() func() end = time.time() print("函数执行花费%f" % (end-begin)) return inner @get_time def func1(): for i in range(100000): print(i) func1()
# 定义一个通用的装饰器(可以适合任何个数的参数) def outer(func): def inner(*args,**kwargs): print(‘装饰内容1...‘) ret = func(*args, **kwargs) print(‘装饰内容2...‘) return ret return inner
def outer1(func): def inner(): print(‘装饰器1-1‘) func() print(‘装饰器1-2‘) return inner def outer2(func): def inner(): print(‘装饰器2-1‘) func() print(‘装饰器2-2‘) return inner @outer1 @outer2 def show(): print(‘Show...‘) show()
输出为:
装饰器1-1 装饰器2-1 Show... 装饰器2-2 装饰器1-2
def set_args(msg): def set_func(func): def inner(): print(‘装饰内容 ‘ + msg) func() return inner return set_func @set_args(‘Hello‘) def show(): print(‘Show run...‘) show()
输出为
装饰内容 Hello Show run...
def show(): print("show") show() # 这个函数用来测试参数是否是可调用对象 print(callable(show)) print(callable(1)) print(callable(‘Hello‘)) class Person(): # 当一个类中实现了下面的 __call__ 函数 # 那么该类的实例对象就变成了可调用对象, 也就是说,实例对象后面可以加() def __call__(self, *args, **kwargs): print(‘Call Run....‘) tom = Person() print(callable(tom)) tom()
输出为:
show True False False True Call Run....
class Wrapper(): def __init__(self,func): self.func = func def __call__(self, *args, **kwargs): print(‘装饰内容1...‘) ret = self.func(*args, **kwargs) print(‘装饰内容2...‘) return ret
@Wrapper # show = Wrapper(show) def show(): print("show run ...") show()
输出为:
装饰内容1... show run ... 装饰内容2...
标签:adp ndk time cifs set vsc roi 函数返回 conf
原文地址:https://www.cnblogs.com/tanhuan-share/p/12996542.html