标签: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