python中的数据类型


本文摘自网络,作者,侵删。

①  互斥锁和GIL的区别

互斥锁在多线程的情况下,确保当前线程执行完之后,继续下个任务,如果说当前任务仍然在执行的时候,下个任务会阻塞

GIL锁是保证在同一时间有一个线程,当释放掉GIL的时候,会继续下一个线程

但是也有可能是IO流阻塞,并没有完成该线程任务就直接释放,该线程的任务分多少次执行完这个会安装GIL默认策略。

互斥锁是必须保证当前任务在当前线程的完成

GIL锁是不一定在当前线程完成任务 情况是IO流阻塞的时候,直接停止当前线程继续下次线程

②  python高并发解决方案有哪些 并且使用的原因?

1.cdn 内容分发  解决的问题就是 尽量避开有可能影响数据传输速度和未定型的瓶颈环节,是内容传输的更加快更加稳定

目的是 cdn的目的就是尽可能减少资源在转发传输链路抖动的情况下顺利保证信息的连贯性

cdn就是扮演着护航者和加速者的角色更加快准狠的触发信息和触达每一个用户,带来更加极致的用户体验

2.精灵图      css精灵 主要是将网页中零星的图片集中到一个大的图片中

使用的原因:减少对浏览器的请求次数,避免网页的延迟

方便统一对小图标的管理

3.后台数据库使用mysql+redis  持久化+缓存  大大提升了高数据量web访问的访问速度

redis提供了大量的数据结构 str list set hash-set sorted

4.数据库的优化        sql优化 索引的优化 分库分表 读写分离

使用drf自带的缓存  django rest framework 自带的缓存

5.集群化的部署  django + uwsgi +nginx

6.分布式+异步 celery是分布式异步的解决方案

7.语言层面  在一些并发量更多的地方,改用golang语言编写

③  不定长参数的理解

*args    位置参数 定义函数的时候在形参前面加一个,代表可以接收多个参数

用元组的形式接受保存所有数据 一般写成def function(*args)

**kwargs  key value  代表可以接受任意多个命名参数 字典类型保存

④  缺省参数的理解*

如果调用函数的时候,传递了对应位置的实参,那就是用了这个传递的值,

如果没有传递对应的值,那就使用缺省参数的值

⑤  break 和 continue 的区别

break和continue是嵌套在while循环中的

break是结束整个循环  结束整个while循环

continue 是结束此次循环继续下次循环 结束内层的while循环但并没有结束整个循环。

⑥  is和==的区别是

is是判断两个值的id内存地址和值是否相同

==是仅仅判断两个值是否相同

⑦ __new__  __init__的区别

 __init__ 创建参数 使对象初始化

__new__  是有参数有返回值的

new作用与init之前,前者可以决定是否调用后者可以决定调用哪个类的init方法

⑧  range和xrange的区别是

range和xrange的用法相同 判断范围 循环

但是xrange返回的是生成器 yield next 生成器是特殊的迭代器 next

⑨  yield和return的不同点和共同点

共同点是 都是返回程序执行的结果

yield  返回执行结果并不中断程序执行

return  在返回执行结果的同时中断程序执行

⑩  举例5个常用的python标准库并说明他的作用

time  时间模块

math  数学运算

os    操作系统相关联的函数

sys  命令函参数

re    正则表达式

datetime  日期时间

11.几种常用设计模式

单例模式  single  保证一个类仅有一个实例 , 并且提供一个访问它的全局访问点,比如框架中的数据库连接

装饰器模式    函数嵌套不修改元类代码和继承的情况下动态扩展类的功能,框架中的每个controller文件会提供before和after方法

迭代器模式  iterator 提供一个方法顺序访问一个聚合对象中的各个元素

命令模式  将请求封闭成对象以便使用不同的请求,

队列或者日志来参数化其他对象,命令模式也支持可撤销操作

12.python2和python3的区别

python2                                python3

编码          ascii                                  utf8

输入          raw_input                              input

输出          print 'content'                          print('content')

数字表示      python自动转化为长整型+long加L        int 没有long长整型

整型除法      只保留整数位                          全部保留所有内容

range/xrange  不会在内存中立即创建而是边循环边创建    只有range 相当于xrange中的range

在内存中将所有的值创建                不会在内存中立即创建而是边循环边创建

包的定义        python2中必须要有init.py文件                  不需要有init.py

map/filter    返回列表直接创建值通过索引取值          返回迭代器,不直接创建值,通过循环边循环边创建

str          相当于python3的字节类型                  字符串类型unicode编码

unicode      相当于python3的字符串类型                没有unicode

字节类型    python没有字节码类型                      bytes字节码


13.列表和元组的区别

列表 是可变的数据类型 list 用中括号的  列表可被用于保存多个相互独立的对象的数据集合

元组 是不可变的数据类型 tuple 用小括号的 声明只有一个元素的元组时需要在后面添加一个逗号

元组只要是被定义和赋值之后不能像列表一样添加,删除修改。也就是说元组在程序运行过程中不可以进行修改

元组是用于描述一个不会更改的事物的多个属性

列表是动态数组 不可变且可以重设长度 改变内部元素的个数

元组是静态数组 不可变内部数据一旦创建就不可以改变

元组缓存于python运行时的环境这意味着我们每次使用元组的时候无需访问内核去分配内存



本文来自:简书

感谢作者:幼姿沫

查看原文:python中的数据类型

相关阅读 >>

详解Golang发送邮件(qq邮箱)

Golang四舍五入保留两位小数

Golang map无法删除元素吗

剑指 offer 17. 打印从1到最大的n位数

Go语言开篇

聊聊dubbo-Go-proxy的route

[系列] - Go-gin-api 路由中间件 - 日志记录(三)

Golang中map与并发

手撸Golang Go与微服务 saga模式之7

Golang如何防止意外崩溃

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...