python(一)

1.简述解释性语言和编译性的区别
2.列举你所知道的python2与python3之间的区别
3.什么是匿名函数。匿名函数一般结合什么一起使用
4.三次握手四次挥手
5.什么是GIL全局解释器锁

简述解释性语言和编译性的区别

  • 编译型语言(需要编译器,相当于谷歌翻译器):编程语言执行速度快,不依赖语言环境运行,跨平台差,如c、c++执行速度快,调试麻烦
  • 解释型语言(需要解释器,相当于同声传译):解释型跨平台好,一份代码,可以到处使用,缺点是执行速度慢,依赖解释器运行,如Python,Java执行速度慢,调试方便

列举你所知道的python2与python3之间的区别

# py2
>>> print("hello", "world")
('hello', 'world')
# py3
>>> print("hello", "world")
hello world


py2:input_raw()
py3: input()
    
    
1/2的结果
py2: 返回0
py3: 返回0.5
    

py2:默认编码ascii
py3: 默认编码utf-8

    
字符串
py2:unicode类型表⽰字符串序列,str类型表⽰字节序列
py3::str类型表⽰字符串序列,byte类型表⽰字节序列
py2中函数⽤关键字global声明某个变量为全局变量,但是在嵌套函数中,想要给⼀个变量声明为⾮局部变量是没法实
现的。
py3中,新增了关键字nonlocal,使得⾮局部变量成为可能



py3中所有的类都是新式类
py2中不继承object的类都是经典类


xrange与range的区别
xrange生成的是一个list对象,range是一个生成器

什么是匿名函数。匿名函数一般结合什么一起使用

匿名函数没有名字
def func(x,y,z):
    return x+y+z

# 相当于
lambda x,y,z: x+y+z   # 与函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,除非让其有名字
func = lambda x,y,z: x+y+z
func(1,2,3)

三次握手四次挥手

三次握手:

1⾸先客⼾端向服务端发送⼀个带有SYN 标志,以及随机⽣成的序号100(0字节)的报⽂
2服务端收到报⽂后返回⼀个报⽂(SYN200(0字节),ACk1001(字节+1))给客⼾端
3客⼾端再次发送带有ACk标志201(字节+)序号的报⽂给服务端
⾄此三次握⼿过程结束,客⼾端开始向服务端发送数据。
1客⼾端向服务端发起请求:我想给你通信,你准备好了么?
2服务端收到请求后回应客⼾端:I'ok,你准备好了么
3客⼾端礼貌的再次回⼀下客⼾端:准备就绪,咱们开始通信吧!
整个过程跟打电话的过程⼀模⼀样:1喂,你在吗2在,我说的你听得到不3恩,听得到(接下来请开始你的表演)
补充:SYN:请求询问,ACk:回复,回应。

四次握手:

由于TCP连接是可以双向通信的(全双⼯),因此每个⽅向都必须单独进⾏关闭(这句话才是精辟,后⾯四个挥⼿过程都是其具体实现的语⾔描述)
四次挥⼿过程,客⼾端和服务端都可以先开始断开连接
1客⼾端发送带有fin标识的报⽂给服务端,请求通信关闭
2服务端收到信息后,回复ACK答应关闭客⼾端通信(连接)请求
3服务端发送带有fin标识的报⽂给客⼾端,也请求关闭通信
4客⼾端回应ack给服务端,答应关闭服务端的通信(连接)请求

什么是GIL全局解释器锁

全局解释器锁,每次只能一个线程获得cpu的使用权;

为了线程安全,也就是为了解决多线程之间的数据完整性和状态同步而加的锁,因为线程间数据是共享的。

posted @ 2019-11-17 20:13  SetCreed  阅读(104)  评论(0编辑  收藏  举报