1.什么是闭包?闭包的特征?
定义闭包,完成的功能为:传入一个数求和并输出
例如: 传入10 ->输出10
传入15 ->输出25
传入20 ->输出45
1.什么是闭包?
简单来说,闭包是指可以访问另一个函数作用域变量的函数,一般是定义在外层函数中的内层函数。
即重用一个变量,又保护变量不被污染的一种机制。
闭包的特征?
(1)内部的函数可以访问外部的内容
(2)外部不能访问内部函数的变量
(3)里面的变量和参数不会被垃圾回收机制回收
def outer():
result = []
def inner_a(value):
result.append(value)
print(sum(result))
return inner_a
inner = outer()
inner(10)
inner(15)
inner(20)
2.定义一个装饰器:打印函数运行花费的时间
你在执行之前获取一个时间
执行函数
在执行函数之后获取一个时间
去求时间差
time模块
import time
def cost_time(func):
def inner(*args, **kwargs):
before_time = time.time()
func(*args, **kwargs)
after_time = time.time()
print(after_time - before_time)
return inner
print(time.time())
@cost_time
def login():
time.sleep(1)
print('login')
login()
3.定义一个类
要求:
包含一个对象属性,且用_(单下划线)命名的
定义一个类方法(装饰器)
定义一个静态方法(装饰器)
定义委托属性(三个类装饰器): 可以访问_命名的属性的值
可以修改_命名的属性的值
可以删除_命名的属性
执行:
实例一个对象
调用类方法(类和对象两种方式)
调用静态方法(类和对象两种方式)
对象.委托属性
对象.委托属性 = value
del 对象.委托属性
class TestClass:
def __init__(self):
self._data = None
@classmethod
def class_method(cls):
print("class method!!")
@staticmethod
def static_method():
print("static method!!")
@property
def data(self):
return self._data
@data.setter
def data(self, value):
self._data = value
@data.deleter
def data(self):
del self._data
test_class = TestClass()
TestClass.class_method()
TestClass.static_method()
test_class.class_method()
test_class.static_method()
print(test_class.data)
test_class.data = "data"
print(test_class.data)