目录
一.什么是闭包?闭包的特征?定义闭包,完成的功能为:传入一个数求和并输出
一.什么是闭包?闭包的特征?定义闭包,完成的功能为:传入一个数求和并输出
闭包就是外部函数中定义一个内部函数,内部函数引用外部函数中的变量,外部函数的返回值是内部函数; 闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)
闭包的特征?
1.嵌套函数
2.内层函数引用了外层函数的变量
3.内层函数作为返回值返回给外层函数
定义闭包,完成的功能为:传入一个数求和并输出
例如:
传入10 ->输出10
传入15 ->输出25
传入20 ->输出45
def outer():
sum_data = []
def inner(num):
sum_data.append(num)
print(sum(sum_data))
return inner
summary = outer()
summary(10)
summary(15)
summary(20)
结果如图:
二.定义一个装饰器:打印函数运行花费的时间
(你在执行之前获取一个时间,执行函数,在执行函数之后获取一个时间,去求时间差,time模块)
import time
# 导入time模块
def decorator(func):
# 定义计算消耗时间的装饰器
def timer():
before_time = time.time()
func()
after_time = time.time()
consume_time = after_time - before_time
print(consume_time)
return timer
@decorator
def admin():
# 将装饰器添加到需要运行的程序上;
print("Hello World")
time.sleep(2)
pass
# 运行程序
admin()
三.定义一个类:
要求:包含一个对象属性,且用_(单下划线)命名的
定义一个类方法(装饰器)
定义一个静态方法(装饰器)
定义委托属性(三个类装饰器): 可以访问_命名的属性的值
可以修改_命名的属性的值
可以删除_命名的属性
class Entrust:
def __init__(self):
self._name = 'China'
@classmethod
def class_method(cls):
print("This is class_method")
@staticmethod
def static_method():
print("This is static_method")
@property
def visit(self):
return self._name
@visit.setter
def visit(self, arg):
self._name = arg
@visit.deleter
def visit(self):
del self._name
执行:
实例一个对象
调用类方法(类和对象两种方式)
调用静态方法(类和对象两种方式)
对象.委托属性
对象.委托属性 = value
del 对象.委托属性
receive = Entrust()
Entrust.class_method()
receive.class_method()
Entrust.static_method()
receive.static_method()
print(receive.visit)
receive.visit = "Xi'an"
print(receive.visit)
del receive.visit