今天主要学习的就是装饰器 和 数据库的一些基本操作
主要知识点:
装饰器的作用:为已有的函数,在不改变源代码和不改变原函数的调用方式的前提下,增添新的功能。
装饰器的核心原理:我们在调用被装饰器装饰器的函数的时候,其实此函数名并不是原函数了,而是装饰器中的内函数的引用。(一定要记住这句话!!!!!!重要的话说三遍,假装我说了三遍了)
装饰器分类简单了解即可,我们需要记忆的内容是万能装饰器的格式:
- import time
- # 定义一个外函数,实现用作装饰器的闭包
- def set_func(func):
- # 定义一个内函数
- def inner(*args,**kwargs):
- # 装饰功能语句,截取起始时间
- start = time.time()
- # 调用实际执行的函数(被装饰的函数)
- result = func(*args,**kwargs)
- # 装饰功能语句,截取结束时间
- end = time.time()
- # 显示一下时间
- print('共用了%s秒 ' % (end - start))
- # 返回被装饰函数的结果
- return result
- # 返回内函数的引用
- return inner
上面试一个简单的万能装饰器,实现的是给函数增加一个现实所用时间的功能。
类装饰器:
- # 实现装饰器类
- # 实现两个方法
- # inint方法,用来接收被装饰函数的应用
- # call方法,用来让被装饰函数名调用时,可执行,因为使用类装饰器后,被装饰函数就不在指向原函数对象,而是指向类的实例对象
- import time
- class CountTime(object):
- # 事项init,作用,接收被装饰函数名
- def __init__(self,func):
- # 将被装饰的函数名保存起来
- self.__func = func
- # 实现call方法,这个方法才是被装饰函数执行时,真正执行的方法,也就是闭包中的内函数
- def __call__(self, *args, **kwargs):
- start = time.time()
- result = self.__func(*args, **kwargs)
- end = time.time()
- print('共用了 %s 秒' % (end - start))
- return result
- @CountTime # show1 = ConuntTime(show1) ----> show = <class CountTime at @xxxxx> -> show1()
与之前的装饰器一样,只不过此处返回的是一个实例对象,不再是一个函数。
多个装饰器装饰同一个函数:(装饰的原理在问题解决中进行一个详细的解释)
用的不多,见到的时候知道咋回事就行了
装饰的时候从下到上装饰,执行的时候从上向下执行。
装饰器时为已有的函数添加额外的功能。
知道了原理就行了
装饰器的传参:
其实就是在一个闭包函数外面再套一层函数,用来接收参数。
关系型数据库:
列:列、属性、字段
域:当前字段的取值范围。
行:元组、记录
数据库的基本操作:
ps 查看系统进程 aux 查看所有进程
- 启动服务
sudoservice mysql start
- 停止服务
sudoservice mysql stop
- 重新启动服务
sudoservice mysql restart
- 查看服务状态
sudoservice mysql status
连接:
mysql -hlocalhost -P3306 -uroot -p
mysql -uroot -pmysql
mysql -uroot -p
退出:
exit
国际通用
quit
ctrl + d
mysql> --查看当前数据库有哪些 -> show databases;
两个横杠代表注释
新建数据库
create database 数据库名;
create database 数据库名charset utf8; (创建一个支持中文的数据库)
查看数据库的创建信息
show create database 数据库名;
改数据库
alter database 数据库名 charset utf8;
alter database 数据库名 charset=utf8;
使用切换数据库
查看当前操作的数据库
select database();
切换
use 数据库; (这个操作可以不写封号)
use 数据库
删除数据库
drop database 数据库名;
查看数据库
show databases;