python编程题怎么做-Python练习题

一、简答题

1 python中如何交换两个变量的值?

x,y = y,x

2.range和xrange的区别?

Range生成一个序列

Xrange是一个迭代器

3.赋值、浅拷贝和深拷贝的区别?(文字描述+代码)

赋值 a=b

浅拷贝 拷贝堆区指向

深拷贝拷贝堆区值

4.__init__和__new__的区别?

它自身的区别;及在Python中新式类和老式类的定义。

new 负责对象的创建而 init 负责对象的初始化。

new:创建对象时调用,会返回当前对象的一个实例

init:创建完对象后调用,对当前对象的一些实例初始化,无返回值 在类中,如果__new__和__init__同时存在,会优先调用__new__

5.简述with方法打开处理文件帮我们做了什么?

With方法帮我们实现了文件关闭

6.如何在一个函数的内部修改全局变量?(简述+代码)

Global关键字

7.谈下python的GIL?

GIL全局解释器锁

劣势:

python在同一时刻只能跑一个线程,这样在跑多线程的情况下,只有当线程获取到全局解释器锁后才能运行,而全局解释器锁只有一个,因此即使在多核的情况下也只能发挥出单核的功能

优势:

不论标准的,还是第三方的扩展模块,都被设计成在进行密集计算任务时释放GIL。另外还有在做IO操作时,GIL总是被释放。对所有面对内建的操作系统C代码的程序来说,GIL会在这个IO调用之前被释放,以允许其它的线程在等待这个IO的时候运行。如果是纯计算的程序,没有IO操作,解释器会每隔100次或每隔一定时间15ms去释放GIL。

8.请写出20个常用的Linux命令?

ls pwd cd touch rm mkdir tree cp mv cat more grep echo

9.python2和python3的区别?至少5种区别?

1、Python3 使用 print 必须要以小括号包裹打印内容,比如 print("hi")Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print "hi"

2.python2 range(1,10)返回列表,python3中返回迭代器,节约内存

3.python2中使用ascii编码,python中使用utf-8编码

4、python2中unicode表示字符串序列,str表示字节序列 python3中str表示字符串序列,byte表示字节序列

5.python2中为正常显示中文,引入coding声明,python3中不需要

6、python2中是raw_input()函数,python3中是input()函数

10.简述python正则表达式的match和search的区别?

match()函数只检测RE是不是在string的开始位置匹配

search()会扫描整个string查找匹配,会扫描整个字符串并返回第一个成功的匹配

也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none

11.请解释使用*args和**kwargs的含义

*args位置可变参数

**kwargs关键字可变参数

*args类型 类似于普通参数

*kwargs类型 类似于字典

12.python中内键的数据类型有?

Str,num,list,tuple,dict,set

13.简述TCP和UDP的区别以及优缺点?三次握手和四次挥手过程?

TCP与UDP区别总结:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

3.1

Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3.2 UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP对系统资源要求较多,UDP对系统资源要求较少

第一次握手:起初两端都处于CLOSED关闭状态,Client将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给Server,Client进入SYN-SENT状态,等待Server确认;

第二次握手:Server收到数据包后由标志位SYN=1得知Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给Client以确认连接请求,Server进入SYN-RCVD状态,此时操作系统为该TCP连接分配TCP缓存和变量;

第三次握手:Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并且此时操作系统为该TCP连接分配TCP缓存和变量,并将该数据包发送给Server,Server检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client和Server就可以开始传输数据。

14.简述python中线程,进程的区别?

1.运行方式不同: 进程不能单独执行,它只是资源的集合。 进程要操作CPU,必须要先创建一个线程。 所有在同一个进程里的线程,是同享同一块进程所占的内存空间。

2,关系 进程中第一个线程是主线程,主线程可以创建其他线程;其他线程也可以创建线程;线程之间是平等的。

进程有父进程和子进程,独立的内存空间,唯一的标识符:pid。

3,速度 启动线程比启动进程快。 运行线程和运行进程速度上是一样的,没有可比性。 线程共享内存空间,进程的内存是独立的。

4,创建 父进程生成子进程,相当于复制一份内存空间,进程之间不能直接访问 创建新线程很简单,创建新进程需要对父进程进行一次复制。

一个线程可以控制和操作同级线程里的其他线程,但是进程只能操作子进程

5,交互 同一个进程里的线程之间可以直接访问。 两个进程想通信必须通过一个中间代理来实现

15.说说HTTP和HTTPS区别?

1,https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

16.cookie和session的区别?

(1)Cookie以文本文件格式存储在浏览器中,而session存储在服务端它存储了限制数据量。它只允许4kb它没有在cookie中保存多个变量。

cookie的存储限制了数据量,只允许4KB,而session是无限量的

我们可以轻松访问cookie值但是我们无法轻松访问会话值,因此它更安全

(4)设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。

17.Django如何防止CSRF攻击?

开启csrf middlewarea中间件

表单提交时加入{% csrf_token %}

18.Django中ORM的作用?

ORM,全拼Object-Relation

Mapping,意为对象-关系映射实现了数据模型与数据库的解耦,通过简单的配置就可以轻松更换数据库,而不需要修改代码只需要面向对象编程,orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句,所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite…,如果数据库迁移,只需要更换Django的数据库引擎即可

19.简述MTV和MVC?

MVC软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)

Model:负责业务对象与数据库的映射(ORM)

View:负责与用户的交互

Control:接受用户的输入调用模型和视图完成用户的请求

Django框架的MTV设计模式借鉴了MVC框架的思想,三部分为:Model、Template和View

Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户

View(视图):负责业务逻辑,并在适当的时候调用Model和Template

20.简述python中的垃圾回收机制?

Python的GC模块主要运用了引用计数来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”解决容器对象可能产生的循环引用的问题。通过分代回收以空间换取时间进一步提高垃圾回收的效率。

> 引用计数

原理:当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1,当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉。

优点:引用计数有一个很大的优点,即实时性,任何内存,一旦没有指向它的引用,就会被立即回收,而其他的垃圾收集技术必须在某种特殊条件下才能进行无效内存的回收。

缺点:但是它也有弱点,引用计数机制所带来的维护引用计数的额外操作与Python运行中所进行的内存分配和释放,引用赋值的次数是成正比的,这显然比其它那些垃圾收集技术所带来的额外操作只是与待回收的内存数量有关的效率要低。同时,引用技术还存在另外一个很大的问题-循环引用,因为对象之间相互引用,每个对象的引用都不会为0,所以这些对象所占用的内存始终都不会被释放掉

二、编程题(共20分)

1.在控制台输出九九乘法表?(12分)

for i in range(1,10):

for j in range(1,10):

print("%d*%d=%2d" % (i,j,i*j),end=" ")

print("")

i = 1

while i <= 9:

j = 1

while j <= i:

print("%d*%d=%-2d"%(i,j,i*j),end = " ") # %d: 整数的占位符,"-2"代表靠左对齐,两个占位符

j += 1

print()

i += 1

2.用python实现斐波那契数列?(1,1,2,3,5,8…)(8分)

def myrecursion(n):

if n ==1: #递归出口

return 1;

else:

return n * myrecursion(n-1)

print(myrecursion(5))

标签:练习题,__,Python,TCP,对象,线程,引用,进程

来源: https://blog.csdn.net/weixin_42590877/article/details/91353762

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值