字符串String
方法:
Join 拼接字符串
Split 分割字符串
Lower 变小写
Upper 变大写
Insert 指定位置插入元素
Index 索引元素指针
Count 统计子序列元素个数
Len 查看对象长度
Find 查找子序列个数,没找到返回-1
replice 字符串替换
Lstrip 移出左侧空白
Strip 移出两侧空白
列表 List
方法:
append 追加元素,默认添加到最后的位置
pop 移出最后一个元素
Reverse 反转元素
Remove 移出元素
Extend 扩展当前列表
Count 统计元素个数
Len 查看对象长度
切片 a[1:2:3] 起始-结束-步长
Index 索引元素位置
Insert 指定位置插入元素
Sort 排序 reverse=True 正序,倒序
元祖 tuple (元祖是不可修改的)
方法:
Index 索引元素指针
切片
Count 统计元素个数
Len查看对象个数
字典 dict (无序)
方法:
get 根据key获取value存在则返回不存在则报错
Keys 返回所有的key
Values 返回所有的values
Items 所有元素返回格式(key, value)
Clear 清空字典
Update 更新
Pop 移除
集合 set 无序 且不重复
Lambda 匿名函数
判断x=1返回True 否则 False
result = lambda x:True if x == 1 True else false
关键字 x参数: 条件成立值 条件
匿名函数是一类无序定义def的函数或子程序,lambda可以接受多个参数并返回表达式的值。
列表推导式
返回偶数 print([i for i in range(10) if i % 2 ==0])
Copy 深拷贝和浅拷贝的区别
浅拷贝:在内存中只额外创建第一层数据
深拷贝:在内存中将所有的数据重新创建一份(排除最后一层)
浅拷贝使用:
Import copy
name_dict = {‘name’:’Wyc’}
Copy_result = copy.copy(name_dict) # 浅拷贝
deepcopy_result = copy.deepcopy(name_dict) # 深拷贝
内置函数
abs() 取绝对值 all() 查看对象是否是可迭代,返回True,False
any() 判断可迭代参数是否为False
input() 函数接受一个标准输入数据,返回String类型
open() 函数用于打开一个文件,创建一个file对象
enumerate() 枚举
ord() 返回字母对应的十进制整数 例如:A=65
eval() 用于执行字符串表达式,返回表达式的值 例如: ret = eval(‘3 * 7’)
sum() 对系列进行求和计算 例如: sum([1,2,3])
bin() 二进制
iten() 生成迭代器
cmp() 用于比较两个对象,如果X <Y返回-1, x==y返回0, x>y返回1
max() 返回最大值
zip() 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元祖
例子:
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
zip_result = zip(a, b)
[(1,6),(2,7),(3,8).....]
min() 返回最小值
oct() 转换成八进制
九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(‘{0} * {1} = {2}’.format(i, j, i * j))
print()
Django
1、filter跟get的区别?
答: filter包含了所有筛选条件匹配的对象,get返回筛选条件,筛选出多条或没有则报错
2、django中的大于小于是什么?
答: _gt 大于、 _lt 小于、gte 大于等于 lte 小于等于 exclude 不等于
3、数据库中有2020-01-01之前的数据, 我要取出01-01 ---- 05-02的数据怎么取出?
答: 使用_range(‘起始时间’, ‘结束时间’)
4、django中你用过哪些中间件?
答:
1、SecurityMiddleware 安全中间件,为请求/响应周期提供了一些安全性增强。
2、SessionMiddleware 会话中间件,可以基于每个站点访问者存储和检索任意数据
3、CommonMiddleware 通用中间件
4、CsrfViewMiddleware 跨站请求伪造,通过向post表单添加隐藏的表单字段,并检查请求的正确值来增强对跨站点请求伪造的保护。
5、MessageMiddleware 消息中间件
6、XFrameOptionsMiddleware 点击劫持保护
7、UpdateCacheMiddleware/FetchFromCacheMiddleware 开启全站缓存/范围缓存
任何一个由Django提供的页面将会被缓存,缓存市场可以在CACHE_MIDDLEWARE_SECONDS 中配置。
5、Django整个运行流程
1、浏览器输入URL进入服务。
2、WSGI拿到请求,封装socket,按照http协议进行解包。
3、解包之后的数据给所有中间件按照顺序执行一遍,如果中间件返回http response,则直接返回,否则继续往下执行。
4、中间件执行完成之后把url进行路由分发映射到对应的views。
5、然后views进行相应的逻辑处理,如果涉及到数据库,则要调用model进行操作,最后返回json。
6、把相应数据给中间件执行,
7、中间件执行完成之后,wsgi按照http协议封装相应数据,返回给浏览器。
6、Celery的任务和beat启动命令是什么?
答:
Celery worker -A task.name -I info -E -A 监听任务启动, -i info 输入详细信息
Celery -A task.task bete -I info
7、Celery运行流程?
答: Client发出消息到队列中,broker将队列中的消息派发给worker来处理。
Client客户端Django
Brokers 是一个消息传输中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务的时候,会想broker传递消息,而后celery的worker将会取到消息进行对应的程序执行。
Backend 通常消息发送完成之后不知对方是否接受,为此celery实现了一个backend,用于存储这些消息以及celery执行的一些消息和结果。
Worker是celery提供的任务单元,worker并发的运行在分布式的系统节点中。
Celery包含模块:
任务模块 Task、消息中间件 Broker、任务执行单元 Worker、任务结果存储 Backend
消息中间件即任务调度队列,消息存储在redis或者,RabbitMQ中。
UWSGI.ini 常用参数配置
Master = true 启动主进程,来管理其他进程。
Chdir = /www/myproject 指定运行目录
module = myproject.wsgi 加载wsgi模块
Socket = 127.0.0.1 指定sock文件,也可指定127,监听网络套接字
Processes=2 启动工作进程
Buffer-size 用于uwsgi宝解析的内部缓存区,默认是4K
Log-maxsize 设置最大文件大小
Disable-logging 禁用请求日志记录
Pidfile 指定pid文件
Enable-threads 允许使用内嵌的语言启动线程
8、进程、线程、协程的优缺点
进程:
同时利用多个CPU,能够同时进行操作
耗费资源(重新开辟内存空间)
线程:
共享内存,IO操作的时候,创造并发操作
协程:
协程极高的执行率,因为主程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程性能优势就明显。
不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制资源不加锁,只需要判断状态就行。
因为协程是一个线程执行,哪么怎么利用多核CPU呢?
答: 最简单的方法是多进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。
9、什么是生产者消费者模型?
答:在工作中,可能会碰到这样一种情况,某个功能模块负责产生数据,这些数据由另外一个模块负责处理,产生数据的模块那么就叫生产者,而处理数据的模块就称为消费者,咋生产者之间在加个缓冲区,形象的称之为仓库,生产者负责往仓库中运输商品,而消费者从仓库中取出商品。这就是生产者消费者模型。
10、命名规范
(1)标识符由字母、下划线、和数字组成、且数字不能开头。
(2)Python大小写敏感,A和a是完全不同的。
(3)不能使用内部关键字来命名
11、redis是什么?保存什么样类型的数据?
Redis是一个开源的BSD许可的基于内存的数据结构存储器,可以用做数据库缓存和消息中间件。
它支持存储多种类型的数据结构, 字符串、散列、列表、集合、有序集合。
12、python的特性是什么?
答: 可解释,具有动态特性,面向对象,简明简单,开源,具有强大的社区
13、什么是猴子补丁?
答:在运行期间动态修改一个类或模块。
14、什么是*args和**kwargs?
答:*args可接收元祖列表参数,**kwargs可接收关键字参数。
15、python中是如何管理内存的?
答:引用计数为主、分代回收和标记清除为辅。
分代回收:对标记清除中的链表进行优化,讲那些可能存在循环引用的对象查分到3个链表,每代都可以存储对象和阈值,当达到阈值的时候,就会对相应的链表中的每个对象做一次扫描,除循环引用各自减1并且销毁引用计数器为0的对象。
标记清除:创建特殊链表专门用于保存、列表、元祖、字典、集合、自定义类等对象、之后再去检查这个链表中的对象是否存在循环应用,如果存在则让双方的引用计数器均-1。
引用计数:变量或者对象一但没有引用,内存直接释放。
Django的ORM
单表增
Models.objects.User.create(name=’wyc’) | **user_dict
类实例化增加
User_obj = models.User(name=’wyc’)
User_obj.save()
存在更新不存在则创建
Models.objects.User.update_or_create(**user_dict)
修改
Models.User.objects.filter(id=1).update(**user_dict)
查
Models.User.objects.all()
Models.User.objects.first() 取出最新的哪一个
删除
Models.User.objects.filter(id=1).delete()
__in 多条件查询
Moels.User.objects.filter(id__in=[11,22,33]) 获取id等于11,22,33的数据
HTTP协议是超文本传输协议,是用于传输诸如HTML的超媒体文档的应用层协议。
HTTP的请求方式
GET: 请求获取request-URL所表示的资源
POST:在request-URL所标识的资源后附加新的数据
HEAD:请求获取由Request-URL所标识的资源的响应信息报头
PUT:请求服务器存储一个资源,并用request-url作为其标识
DELETE: 请求服务器删除Request-URL所标识的资源
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
OPTIONS: 请求查询服务器的性能,或者查询与资源相关的选项。
忠告: 不要在一个舒适的圈子呆久了
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。