python函数没有return,返回什么(python 没有return返回none)

python函数没有return,返回什么(python 没有return返回none)h4 1 python 字符串格式化中 s 和 format 的主要区 amp h4

大家好,我是讯享网,很高兴认识大家。



 <h4>1.python&#23383;&#31526;&#20018;&#26684;&#24335;&#21270;&#20013;&#65292;%s&#21644;.format&#30340;&#20027;&#35201;&#21306;&#21035;&#26159;&#20160;&#20040;</h4><p>python&#29992;&#19968;&#20010;tuple&#23558;&#22810;&#20010;&#20540;&#20256;&#36882;&#32473;&#27169;&#26495;&#65292;&#27599;&#20010;&#20540;&#23545;&#24212;&#19968;&#20010;&#26684;&#24335;&#31526;<br>print&#65288;&ldquo; my name is %s ,im %d year old&rdquo;%("gaoxu",19))<br>&#33258;&#20174;python2.6&#24320;&#22987;&#65292;&#26032;&#22686;&#20102;&#19968;&#31181;&#26684;&#24335;&#21270;&#23383;&#31526;&#20018;&#30340;&#20989;&#25968;str.format(&#65289;&#65292;&#36890;&#36807;{}&#21644;.&#26469;&#20195;&#26367;&#20256;&#32479;&#30340;%<br>&#20027;&#35201;&#30340;&#21306;&#21035;&#26159;&#65306;&#19981;&#38656;&#35201;&#25351;&#23450;&#30340;&#23383;&#31526;&#20018;&#36824;&#26159;&#25968;&#23383;&#31867;&#22411;</p><pre>print('ma&nbsp;name&nbsp;is&nbsp;{}&nbsp;,age&nbsp;is&nbsp;{}&nbsp;year&nbsp;old'.format("&#23567;&#26126;",17))print('my&nbsp;name&nbsp;is&nbsp;{1},age&nbsp;is&nbsp;{0}'.format(15,'&#23567;&#26126;'))&nbsp;#:&#20301;&#32622;&#25874;&#21442;&#30340;&#26041;&#24335;li=['hollo',18]print('may&nbsp;name&nbsp;is&nbsp;{0},my&nbsp;year&nbsp;old&nbsp;is&nbsp;{1}'.format(*li))#&nbsp;&#25353;&#29031;&#20851;&#38190;&#23383;&#20256;&#21442;hash={'name':'hoho','age':18}print&nbsp;('my&nbsp;name&nbsp;is&nbsp;{name},age&nbsp;is&nbsp;{age}'.format(hash))</pre><h4>2.&#29616;&#26377;&#20004;&#20010;&#20803;&#32452;&#65292;&#65288;('a'),('b')&#65289;,&#65288;('c'),('d')&#65289;&#35831;&#29992;&#21311;&#21517;&#20989;&#25968;&#25226;&#20182;&#21464;&#25104;[{'a':'c'},{'b':'d'}]</h4><pre>t1=(('a'),('b')) 

讯享网

t2=((‘c’),(’d’)) res=lambda&nbsp;t1,t2:[{i:j}for&nbsp;i,j&nbsp;in&nbsp;zip(t1,t2)] print(res(t1,t2))

3.如何给列表去重并保持原来的顺序不变

讯享网l=[11,2,3,4,7,6,4,3,54,3,] now_l=[]for&nbsp;i&nbsp;in&nbsp;l:if&nbsp;i&nbsp;not&nbsp;in&nbsp;now_l: now_l.append(i)print(now_l) 也可以用set直接去重和排序print(set(l)

4.解释什么是匿名函数,它有什么好处

为什么匿名函数没有语句?

是被用于在代码被执行的时候构建新的函数对象并且返回

5.python如何书写可变参数和关键字参数

在python中定义函数,可也用必选函数,默认参数,可变参数,和关键字参数,这四种参数都可以一块使用,或者只用其中的一些但是请注意的是参数定义的顺序必须是必选参数,默认参数,可变参数,关键字参数

6.python模块中match和search的区别

7. 1 and 2和1 or2输出结果是什么

python中的and是从左往右计算的,若所有的值都是真的,则返回最后一个,若存在假的,返第一个假的,1 or 2因为是1是非零,所以返回的值是1

8.,示例说明args和kwargs

*args(表示的就是将实参中按照位置传参,多余的都是给args,切都是以元组的方式实现)
kwargs:(表示的是按照关键字传参,保存的是字典的形式

9.写出打印结果

print((i%2&nbsp;for&nbsp;i&nbsp;in&nbsp;range(10)))&nbsp;&nbsp;&nbsp;#:&lt;generator&nbsp;object&nbsp;&lt;genexpr&gt;&nbsp;at&nbsp;0X000001c577DDE258&gt;print([i%2&nbsp;for&nbsp;i&nbsp;in&nbsp;range(10)])&nbsp;&nbsp;&nbsp;&nbsp;[0,,1,0,1,0,1,0,1]

总结:
1,把列表解析【】换成()得到生成器表达式
2,列表解析和生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存
3,pyrhon不但使用迭代器协议,让for循环变得更加通用,大部分内置函数,也是使用迭代器协议
访问对象的,列如:sun是python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协议

10.python2和python3的区别

python3的字节是python2的字符串
python3的字符窜是python2的unciode
在python3中print要加括号
在python3中数字除法有小数点

11.请描述unIcode,utf-8,gbk之间的关系

讯享网Unicode—&gt;encode—–&gt;utf-8utf——–&gt;decode——&gt;unicode

12.迭代器,生成器,装饰器

迭代器即迭代工具,那么什么是迭代那
迭代重复上一个重复的过程,每一次重复即一次迭代,并且每一次迭代的结果都是下一次迭代的开始
为何要用迭代器
对于序列类型:字符串,列表,元组,我们可以使用索引的方式迭代取出包含的元素
对于字典,集合,文件等类型没有索引,若还行取出内部包的元素,则需要找出不依赖索引的方式,那这就是迭代器
什么是可迭代的对象,具有init方法返回就是迭代器,具有next方法
特点优点:提供了一种不依赖索引的取值的方式
缺点: 只能往前循环,不能往后找无法获取长度,
注意的是:迭代器对象一定是可迭代对象,但可迭代对象不一定是迭代器的对象
生成器迭代器的一种关键字yield+关键字,next方法,yield语句一次返回一个结果,在每个
结果中间挂起钩子函数,以便下次重它离开的地方继续
生成器表达式类似于列表推导式,但是生成器返回按需求产生结果的一个对象,而不是一次构建
一个结果的列表
特点:惰性运算,节省空间
装饰器:在不改变原来函数和函数的调用方式进行扩展,就是对外开放,对内封闭的原则
目标:为被装饰的对象添加新的功能

13.def func(a,b=[])这样写有什么陷阱?


讯享网

image.png

所以默认参数要牢记一点:默认参数必须指向不变对象

14.python实现9乘9乘法两种方法?

for&nbsp;i&nbsp;in&nbsp;range(1,10):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;range(1,i+1):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(‘%s&nbsp;*&nbsp;%s=&nbsp;%s’%(i,j,ij),end=“”)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(“)
讯享网&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(&nbsp;’ ‘.join([’&nbsp;’.join([‘%s%s=%-2s’&nbsp;%&nbsp;(y,x,x*y)&nbsp;for&nbsp;y&nbsp;in&nbsp;range(1,x+1)])for&nbsp;x&nbsp;in&nbsp;range(1,10)]))

15.如何在python中拷贝一个对象,并说出他们的区别

拷贝有两种方式:浅拷贝和深拷贝copy.copy()and copy.deepcopy()
我们寻常意义上的复制就是深复制,即将被复制的对象完全再复制一遍作为独立的新个体单独存在,所以
改变原有被复制的到对象不会对已经复制的新对象产生影响。
而浅复制并不会产生一个独立的对象存在,他只是将原有的数据打上一块新标签,所以当其中一块标签被
改变时候,数据就会变化,另一个标签也会随之改变,数据块就发生变化,另一个标签也会随着改变,

image.png

16.谈谈你对python装饰器的理解

装饰器本质上就是一个python函数,它可以让其他函数在不需要任何代码变动的前提下增加额外的功能
,装饰器的返回值也是一个函数对象,她有很多的应用场景,比如:插入日志,事物处理,缓存,权限装饰器就是为已经存在的对象
添加额外功能

def&nbsp;outher(func): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;good(*args,kwargs): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret=func(*args,kwargs)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ret&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;good@outherdef&nbsp;bar(): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(’狗’) bar()

17.python基础:

计算列表中的元素的个数和向末尾追加元素所用到的方法?len(),append()
判断字典中有没有某个key的方法?用到get(‘key’)方法,若没有,将返回值none
现有my_list=range(100)

18.简述python中垃圾回收机制

主要是以对象引用计数为主标记清除和分带技术为辅的那么一种方式
Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变为0,那么相应的对象就会消失。分配给该对象的内存就会释放出来用作他用。
偶尔也会出现引用循环。垃圾回收器会定时寻找这个循环,并将其回收。
Python中还使用了某些启示算法来加速回收。

19.如何判断一个变量是否是字符串

讯享网a=‘sadsadada’print(isinstasnce(a,str))

20.Differences between list and tuple in python link:

http://www.hacksparrow.com/python-difference-between-list-and-tuple.html

21.range和xrange的区别

首先xrange在python3中已经不适用了
range:
函数说明:range([start,]stop[,step]),根据start与stop指定的范围以及step设定的步长
生成一个列表
xrange与range类似,只是返回的是一个&ldquo;xrange object”对象,而非数组list
要生成很大的数字序列的时候,用xrange会比range性能优很多
区别:range会生成一个list对象,而xrange会返回一个生成器对象

22.‘1’,‘2’,‘3’如何变成[‘1’,‘2’,‘3’]?

x=‘1’,‘2’,‘3’li=[]for&nbsp;i&nbsp;in&nbsp;x: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;li&nbsp;.append(i)print(li)‘1’,‘2’,‘3’&nbsp;如何变成[1,2,3] x=‘1’,‘2’,‘3’li=[]for&nbsp;i&nbsp;in&nbsp;x: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;li&nbsp;.append(int(i))print(li)

23.一行实现[1,4,9,16,25,36,49,81,100]

讯享网target=list(map(lambda&nbsp;x:&nbsp;&nbsp;x*x,[1,2,3,4,5,6,7,8,9,10]

24.print(map(str,[1,2,3,4])))输出的是什么

map obj

25.请解释Python中的statimethod(静态方法)和classmethod(类方法),

并补全下面的代码

image.png

26.如何用python删除一个文件?

import&nbsp;os os.remove(r’D:gggfileobj) os.remove(&lsquo;路径&rsquo;)

27.面向对象

](https://upload-images.jianshu.io/upload_images/-d872b16188d4ba64.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

28.python如何生成随机数

讯享网import&nbsp;random print(random.randint(1,10))

29.如何在function里面设置一个全局变量

image.png

30.请用python写一个获取用户输入数字,并根据数字大小输出不同脚本信息

image.png

31.请解释生成器和函数的不同,并实现简单的生成器与函数

#&nbsp;def&nbsp;beautiful©:#&nbsp;for&nbsp;i&nbsp;in&nbsp;range©:#&nbsp;yield&nbsp;i2#&nbsp;for&nbsp;item&nbsp;in&nbsp;beautiful(5):#&nbsp;print(item)#函数#&nbsp;def&nbsp;gensquares(N):#&nbsp;res=[0]#&nbsp;for&nbsp;i&nbsp;in&nbsp;range(N):#&nbsp;res.append(i*i)#&nbsp;return&nbsp;res#&nbsp;for&nbsp;item&nbsp;in&nbsp;gensquares(5):#&nbsp;print(item)

总结:
1语法上和函数类似:生成器函数和常规函数几乎一模一样的,他们都是使用def语句进行
定义,区别在于,生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值
2.自动实现迭代器的协议:对于生成器,python自动实现迭代器协议,所以我们可以调用它的next
方法,并且在没有值返回的时候,生成器自动生成Stopltwration异常
3.状态挂起,生成器使用yield语句返回一个值.yield语句挂起该生成器函数的状态,保留足够的信息,方便之后离开的
地方继续执行

38.输入一个字符串,打印结果为倒叙

讯享网a=input(‘please&nbsp;enter&nbsp;a&nbsp;string’)print(a[::-1])

32.请写出自己的计算方法,按照升序合并如下列表

list1=[2,3,4,9,6] list2=[5,6,10,17,11,2] list1.extend(list2)print(sorted(list(set(list))))33.到底什么是python?你可以在回答中进行技术对比(也鼓励这样做)。python是一门解释性语言,这里说与c语言和c的衍生语言不同,python代码不需要编译,其他解释语言还包括Ruby和pyp python是动态语言,在声明变量的时候,不需要声明变量的类型 python非常适合面向对象编程,因为它支持通过组合和继承的方式定义类 python代码编写快,但是运行速度比编译语言通常要慢,好在python允许加入基于c语言编写扩展,因此我们能优化代码,消除瓶颈,这点通常是可以实现的numpy就是一个很好的例子 python用途很广泛—-网络应用,自动化,科学建模,大数据应用,等等通常被称为胶水语言

34.http状态码的不同,列出你所知道的http状态码,然后讲出他们都是什么意思

状态代码有三位数字组成,第一个数字定义响应的类别,共分5种类型
1xx:提示信息–表示请求接受,继续处理
2xx:成功表示请求成功接收,理解,接受
3xx:重定向要完成请求必须更进一步操作
4xx:客户端错误,请求有语法错误或请求无法实现
5xx:服务器端错误–服务器没有实现合法请求
常见状态码:

讯享网200&nbsp;OK//客户端请求成功&nbsp;400&nbsp;Bad&nbsp;Request//客户端请求有语法错误,不能被服务器所理解401&nbsp;Unauthorized//请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用&nbsp;403&nbsp;Forbidden//服务器收到请求,但是拒绝提供服务&nbsp;404&nbsp;Not&nbsp;Found//请求资源不存在,eg:输入了错误的URL&nbsp;500&nbsp;Internal&nbsp;Server&nbsp;Error//服务器发生不可预期的错误&nbsp;503&nbsp;Server&nbsp;Unavailable//服务器当前不能处理客户端的请求,一段时间后可能恢复正常

34.lambda表达式和列表推导式

l2=[lambda:i&nbsp;for&nbsp;i&nbsp;in&nbsp;range(10)] l1=[i&nbsp;for&nbsp;i&nbsp;in&nbsp;range(10)] print(l1[0]) print(l2[0]) print(l20)

35.eval和exce的区别

讯享网print(eval(‘2+3’))print(exec(‘2+1’))exec(“print(‘1+1’)”)
eval还可以将字符串转化成对象
class&nbsp;obj(object): &nbsp;&nbsp;&nbsp;&nbsp;passa&nbsp;=&nbsp;eval(‘obj()’) print(a,type(a))&nbsp;&nbsp;#&lt;main.obj&nbsp;object&nbsp;at&nbsp;0x000001F1F&gt;&nbsp;&lt;class&nbsp;‘main.obj’&gt;

36.cookie和session的区别

session在服务器,cooking在客户端(浏览器)
session默认存在服务器上的文件里面(也可以是内存,数据库)
session的运行依赖session_id,而session_id是存在cookie中,也就是说,若果浏览器禁用lcookie,同时session也会失效(但是可以通过其他方式实现,比如在url中传入session_id)
session可以放在文件,数据库,内存中都可以的
用户验证通常会用session
维持一个会话核心就是客户端的唯一标识,即session_id

37.http是有状态协议还是无状态协议?如何从两次请求判断是否是同一用户?

无状态协议,判断session_id是否相同。

38.有一组数组[3,4,1,2,5,6,6,5,4,3,3]请写一个函数,找出该数组中

没有重复的数的总和

讯享网def&nbsp;MyPlus(l): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_l&nbsp;=&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;l:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;i&nbsp;not&nbsp;in&nbsp;new_l: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_l.append(i)&nbsp; return&nbsp;sum(new_l) &nbsp;print(MyPlus(l&nbsp;=&nbsp;[2,3,4,4,5,5,6,7,8]))

39.Python一行print出1-100的偶数列表:

print(i&nbsp;for&nbsp;i&nbsp;in&nbsp;range(1,100)if&nbsp;&nbsp;i%2&nbsp;==0])

40.1,2,3,4,5能组成多少个互不相同且无重复的元素?

讯享网nums&nbsp;=&nbsp;[]&nbsp;for&nbsp;i&nbsp;in&nbsp;range(1,6):&nbsp;for&nbsp;j&nbsp;in&nbsp;range(1,6):&nbsp;for&nbsp;k&nbsp;in&nbsp;range(1,6):&nbsp;if&nbsp;i&nbsp;!=&nbsp;j&nbsp;and&nbsp;j&nbsp;!=&nbsp;k&nbsp;and&nbsp;i&nbsp;!=k:&nbsp;new_num&nbsp;=&nbsp;i*100&nbsp;+&nbsp;k*10&nbsp;+&nbsp;j&nbsp;if&nbsp;new_num&nbsp;not&nbsp;in&nbsp;nums:&nbsp;nums.append(new_num)&nbsp;print(nums)

41.请写出五中不同的http的请求方法:

get,post,put,delete,head,connect

42.描述多进程开发中的join与daemon的区别

守护进程(daemon)
主进程创建守护进程
其一:守护进程会在主进程代码执行结束后就终止
其二:守护进程内无法开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children
注意:进程之间是相互独立的,主进程的代码运行结束,守护进程随即终止
p.join([timeout]): 主进程等待相应的子进程p终止(强调:是主线程处于等的状态,而p是处于运行的状态)。需要强调的是p.join()只能join住start开始的进程,而不能join住run开启的进程

43.简述GRL对python的影响

由于GIL的影响,python无法利用多核优势
CIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁都一样将并发运行转化为串行,此时来控制同一时间内只能被一个任务修改,进而保证数据的安全.可以肯定的是:保护不同数据的安全,需要加不同的锁。
现在计算机基本都是多核,python对于计算密集型任务开多线程的效率并不能带来多大的技术提升,甚至不如串行(没有大量的切换),但是对于io密集型任务效率还是有显著的提升的
因此,对于io密集型任务,python多线程更加的适合。

44.执行python脚本的两种方式

https://www.imooc.com/article/run.py.shell直接调用python脚本 python&nbsp;run.py&nbsp;调用python&nbsp;解释器来调用python脚本

45.TCP协议和UDP协议的区别是什么?

1、TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束后也要结束连接。而UDP是无连接的
2、TCP协议保证数据发送,按序送达,提供超时重传保证数据可靠性,但是UDP不保证按序到达,甚至不能保证到达,还是努力交付,即便是按序发送的序列,也不保证按序送到。
3、TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。
4、TCP有流量控制和拥塞控制,UDP没有。网络拥堵不会影响发送端的发送速率。
5、TCP面向的字节流的服务,UDP面向的是报文的服务。

四次挥手释放连接时,等待2MSL的意义?
第 一,为了保证A发送的最有一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN和ACK 报文段的确认。B会超时重传这个FIN和ACK报文段,而A就能在2MSL时间内收到这个重传的ACK+FIN报文段。接着A重传一次确认。
第二,就是防止上面提到的已失效的连接请求报文段出现在本连接中,A在发送完最有一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。

46.一句话总结tcp和udp的区别

tcp是面向连接的,可靠的字节流服务,udp是面向无连接的,不可靠而数据服务

47.python有如下一个字典

讯享网print(sorted(dic_tmp.items(),key=lambda&nbsp;dic_tmp:dic_tmp[0]))

48.简述inndb和myisam的特点:

49.利用python上下文管理器,实现一个写入文件的功能(写入内容为‘hello world’)

class&nbsp;Open(object): &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;init(self,name,mode):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.name=name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.mode=mode&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;enter(self):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.opened=open(self.name,self.mode)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;self.opened&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;exit(self,exc_type,exc_val,exc_tb):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.opened.close() with&nbsp;open(‘mytext.txt’,‘w’)&nbsp;as&nbsp;write: &nbsp;&nbsp;&nbsp;&nbsp;write.write(‘hello&nbsp;&nbsp;&nbsp;qaweqwe&nbsp;world’)

50.Django的请求生命周期

1,当用户在浏览器中输入url时浏览器会生成请求头和请求体发送给服务端请求头和请求体中会包含浏览器的动作(action)这个动作通常为get或者post提现在url之中
2.url经过Django中的wsgi再经过django的中间件,最后url到路由的映射表一条一条进行匹配一旦其中的某一条匹配成功就执行视图函数,后面的路由就不在继续匹配了
3视图函数根据客户端的请求查询相应的数据,返回给Django,然后Django把客户端想要的数据作为一个字符串返回给客户端
4客户端浏览器接受到返回的数据,经过渲染后显示给用户

51.django rest framework规范

1url后尽量用名词,因为rest frame是面向资源的编程,因此url命名时能体现出资源
2method的不同,实现增删改查的操作
3版本号,因为有版本的更替,为了体现出版本的过度,因此在发请求的时候,要体现出版本号
4返回值,与以往只返回json不同,rest api规范要加上状态码。
5域名,由于前后端分离,因此要处理跨域问题,解决方法:jsonp,cors
6过滤,通过url传参的形式传递搜索条件(列如:指定返回的记录数量,指定分页等)

52.jsonp和cors

jsonp的本质就是利用script的src属性绕过同源策略
cors
整个cors通信过程,都是浏览器自动完成,不需要用户参与,对于开发者来说cors通信和同源的ajax没有什么区别,挨代码完全一样,浏览器一旦发现ajax请求跨源,就会自动添加一些附加头的信息,有时还会多出一次附加的请求,但用户不会有感觉.

53.现有字典dic = {‘a’:1,‘b’:2,‘c’:23,’d’:11,‘e’:4,‘f’:21},请按照字段中的value进行排序

讯享网print(sorted(dic.items(),key=lambda&nbsp;dic:dic[1]))

54.mysql 搜索引擎和局域网权限,mysql中的锁

innodb存储引擎(最常用的引擎,支持事物,特点是行锁,特点是行锁设计,支持外键)
myisam存储引擎(不支持事物,表锁的设计,支持全文索引)
nod存储引擎
memory存储引擎

55.二叉树的遍历

class&nbsp;BiTreeNode(object): &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;init(self,data): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.data&nbsp;=&nbsp;data &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lchild&nbsp;=&nbsp;None &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.rchild&nbsp;=&nbsp;Nonea&nbsp;=&nbsp;BiTreeNode(‘A’) b=&nbsp;BiTreeNode(‘B’) c&nbsp;=&nbsp;BiTreeNode(‘C’) d&nbsp;=&nbsp;BiTreeNode(’D’) e&nbsp;=&nbsp;BiTreeNode(‘E’) f&nbsp;=&nbsp;BiTreeNode(‘F’) g&nbsp;=&nbsp;BiTreeNode(‘G’) e.lchild&nbsp;=&nbsp;a e.rchild&nbsp;=&nbsp;g a.rchild&nbsp;=&nbsp;c c.lchild&nbsp;=&nbsp;b c.rchild&nbsp;=&nbsp;d g.rchild&nbsp;=&nbsp;f root&nbsp;=&nbsp;e#&nbsp;前序遍历&nbsp;&nbsp;(先找做子树,后找右子树)def&nbsp;pre_order(root): &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;root: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(root.data,end=“)&nbsp;&nbsp;#&nbsp;EACBDGF &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre_order(root.lchild) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre_order(root.rchild) pre_order(root) print(”)#&nbsp;中序遍历def&nbsp;in_order(root): &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;root: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in_order(root.lchild) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(root.data,end=“)&nbsp;&nbsp;&nbsp;#&nbsp;ABCDEGF &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in_order(root.rchild) in_order(root)&nbsp;&nbsp;#&nbsp;ABCDEGFprint(”)#&nbsp;后序遍历def&nbsp;post_order(root): &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;root: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post_order(root.lchild) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post_order(root.rchild) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(root.data,end=“) post_order(root)&nbsp;&nbsp;#BDCAFGE

56.实现页面刷新的方法:

1轮训
2长轮训
3websocket

轮训:客户端定向向服务器发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接.

优点:后端程序编写比较容易
缺点:请求中有大半是无用浪费带宽和服务器资源.
实例:适用小型应用

长轮训:客户端向服务器发送ajax请求,服务器连接到hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应后再向服务端发送新的请求.

优点:在无消息的情况下不会频繁的请求
缺点:服务器hold连接会消耗资源。
实例:web,hi网页版,facebook im。

57.字典推导式

讯享网d&nbsp;=&nbsp;{key:&nbsp;value&nbsp;for&nbsp;(key,&nbsp;value)&nbsp;in&nbsp;iterable}

58.python中单下划线和双下划线

&gt;&gt;&gt;&nbsp;class&nbsp;MyClass():…&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;init(self): …&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.superprivate&nbsp;=&nbsp;“Hello”…&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self._semiprivate&nbsp;=&nbsp;”,&nbsp;world!“…&gt;&gt;&gt;&nbsp;mc&nbsp;=&nbsp;MyClass()&gt;&gt;&gt;&nbsp;print&nbsp;mc.superprivate Traceback&nbsp;(most&nbsp;recent&nbsp;call&nbsp;last): &nbsp;&nbsp;File&nbsp;”&lt;stdin&gt;”,&nbsp;line&nbsp;1,&nbsp;in&nbsp;&lt;module&gt;AttributeError:&nbsp;myClass&nbsp;instance&nbsp;has&nbsp;no&nbsp;attribute&nbsp;‘superprivate’&gt;&gt;&gt;&nbsp;print&nbsp;mc._semiprivate ,&nbsp;world!&gt;&gt;&gt;&nbsp;print&nbsp;mc.dict{‘_MyClasssuperprivate’:&nbsp;‘Hello’,&nbsp;’_semiprivate’:&nbsp;’,&nbsp;world!‘}

foo:一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突,就是例如init(),del(),call()这些特殊方法
_foo:一种约定,用来指定变量私有.程序员用来指定私有变量的一种方式.不能用from module import * 导入,其他方面和公有一样访问;
foo:这个有真正的意义:解析器用classnamefoo来代替这个名字,以区别和其他类相同的命名,它无法直接像公有成员一样随便访问,通过对象名.类名xxx这样的方式可以访问.
详情见:http://www.zhihu.com/question/

59.python重载

函数重载主要是为了解决两个问题。
1.可变参数类型。
2.可变参数个数。
另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。
好吧,那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。
那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?大家知道,答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。
好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。
引自知乎:http://www.zhihu.com/question/

60.虚拟内存技术

虚拟存储器是指具有请求和调入功能,能从逻辑上对内存容量加以扩充的一种存储系统

61.分页和分段

分页: 用户程序的地址空间被划分成若干固定大小的区域,称为&ldquo;页&rdquo;,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。
分段: 将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。

分页与分段的主要区别

1.页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.
2.页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.
3.分页的作业地址空间是一维的.分段的地址空间是二维的.

62.去除列表中重复的元素

用集合

讯享网list(set(l))

用字典

l1&nbsp;=&nbsp;[‘b’,‘c’,’d’,‘b’,‘c’,‘a’,‘a’] l2&nbsp;=&nbsp;{}.fromkeys(l1).keys()print&nbsp;l2

用字典并保持顺序

讯享网l1&nbsp;=&nbsp;[‘b’,‘c’,’d’,‘b’,‘c’,‘a’,‘a’] l2&nbsp;=&nbsp;list(set(l1)) l2.sort(key=l1.index)print&nbsp;l2

列表推导式

l1&nbsp;=&nbsp;[‘b’,‘c’,’d’,‘b’,‘c’,‘a’,‘a’] l2&nbsp;=&nbsp;[] [l2.append(i)&nbsp;for&nbsp;i&nbsp;in&nbsp;l1&nbsp;if&nbsp;not&nbsp;i&nbsp;in&nbsp;l2]

sorted排序并且用列表推导式

讯享网l&nbsp;=&nbsp;[‘b’,‘c’,’d’,‘b’,‘c’,‘a’,‘a’]&nbsp;[single.append(i)&nbsp;for&nbsp;i&nbsp;in&nbsp;sorted(l)&nbsp;if&nbsp;i&nbsp;not&nbsp;in&nbsp;single]&nbsp;print&nbsp;single

63.链表对调换

1-&gt;2-&gt;3-&gt;4转换成2-&gt;1-&gt;4-&gt;3.

class&nbsp;ListNode: &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;init__(self,&nbsp;x):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.val&nbsp;=&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.next&nbsp;=&nbsp;Noneclass&nbsp;Solution: &nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;@param&nbsp;a&nbsp;ListNode &nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;@return&nbsp;a&nbsp;ListNode &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;swapPairs(self,&nbsp;head):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;head&nbsp;!=&nbsp;None&nbsp;and&nbsp;head.next&nbsp;!=&nbsp;None: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next&nbsp;=&nbsp;head.next &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;head.next&nbsp;=&nbsp;self.swapPairs(next.next)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next.next&nbsp;=&nbsp;head&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;next &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;head

65.创建字典方法

1直接创建

讯享网dict&nbsp;=&nbsp;{‘name’:‘earth’,&nbsp;‘port’:‘80’}

2工厂方法

items=[(‘name’,‘earth’),(‘port’,‘80’)] dict2=dict(items) dict1=dict(([‘name’,‘earth’],[‘port’,‘80’]))

3frokeys()方法

讯享网dict1={}.fromkeys((‘x’,‘y’),-1) dict={‘x’:-1,‘y’:-1} dict2={}.fromkeys((‘x’,‘y’)) dict2={‘x’:None,&nbsp;‘y’:None}

66.二分查找

#coding:utf-8def&nbsp;binary_search(list,item): &nbsp;&nbsp;&nbsp;&nbsp;low&nbsp;=&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;high&nbsp;=&nbsp;len(list)-1 &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;low&lt;=high: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mid&nbsp;=&nbsp;(low+high)/2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guess&nbsp;=&nbsp;list[mid]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;guess&gt;item: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high&nbsp;=&nbsp;mid-1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;guess&lt;item: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low&nbsp;=&nbsp;mid+1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;mid&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Nonemylist&nbsp;=&nbsp;[1,3,5,7,9]print&nbsp;binary_search(mylist,3)

67.列举你所知道的python代码检测工具以及它们之间的区别

讯享网pychecker是一个python代码静态分析工具,它可以帮助python代码找bug会对代码的复杂度提出警告 pulint高阶的python代码分析工具,分析python代码中的错误查找不符合代码风格标准

68.如何用python来进行查找替换一个文本字符串

69.一些经典的编程题:

转自:https://www.jianshu.com/p/177bb9c418ed

70.用Python字符串&ldquo;这是一个test字符串&rdquo;的中文字符个数,字符编码为utf-8

import&nbsp;osimport&nbsp;re s=’这是一个test字符串‘result=re.findall(r’[一-龥]‘,s) print(len(result)

71.什么是python或者说python的特点

python是一门解释性语言,运行之前不需要编译,动态类型语言在声明变量的时候不用声明变量的类型面向对象编程,编写快,用途广泛,能让困难的事变得容易.

72.补充缺失的代码

def print_directory_contents(sPath):
&ldquo;&ldquo;&rdquo;&rdquo;
这个函数接受文件夹的名称作为输入参数,
返回该文件夹中文件的路径,
以及其包含文件夹中文件的路径。
”“”

讯享网def&nbsp;print_directory_contents(sPath): &nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;sChild&nbsp;in&nbsp;os.listdir(sPath):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sChildPath&nbsp;=&nbsp;os.path.join(sPath,sChild)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;os.path.isdir(sChildPath): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print_directory_contents(sChildPath)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;sChildPath

73.下面这些是什意思@classmethod,@staticmethod,@property?

装饰器,装饰器是一种特殊的函数,要么接受函数作为输入参数,并返回一个函数,要么接受一个类为输入参数,并返回一个类
@标记是语法糖,可以让你简单易读的方式装饰目标对象。
详细三种装饰器:Sheena@codementor

74.介绍一下except的用法和作用

try….except执行try下的语句,如果发生异常,则执行过程跳到except语句,对每个except分支顺序尝试执行,如果异常与except中的异常组匹配,指行相应的语句.

75.python中的pass语句作用是什么

占位符

76.python中的unittest是什么

在python中,unittest是python中的单元测试框架,它有支持共享搭建,自动测试,在测试中暂停代码,将不同测试迭代成一组.

77.python中的模块和包

78.如何异常扑捉,常见的异常捕捉有哪些?

74题是一种方式
assert语句:判断assert后面紧跟语句是True,还是False,如果是True则继续执行print如果是false则中断程序,调用默认的异常处理器,同时输出assert语句逗号的提示信息.
with语句:如果with语句或语句块中发生异常,会调用默认的异常处理器处理但文件还是会正常关闭。

79.用python匹配html tag的时候,&lt;.&gt;和&lt;.?&gt;有什么区别?

80.简述标准库中functools.wraps的作用

将原函数的对象指定属性复制给包装函数对象,默认有module。name,doc

81.部署python开发的web程序的方法

82.Django的model有哪几种继承形式,有何不同?

Django中有三种继承方式

83.如何提高网页的响应速度?

84.统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数。

from&nbsp;collections&nbsp;import&nbsp;Counterimport&nbsp;rewith&nbsp;open(‘a.txt’,&nbsp;‘r’,&nbsp;encoding=‘utf-8’)&nbsp;as&nbsp;f: &nbsp;&nbsp;&nbsp;&nbsp;txt&nbsp;=&nbsp;f.read() c&nbsp;=&nbsp;Counter(re.split(‘W+’,txt))&nbsp;&nbsp;#取出每个单词出现的个数print© ret&nbsp;=&nbsp;c.most_common(10)&nbsp;&nbsp;&nbsp;#取出频率最高的前10个print(ret)

85.给你一个数,如何找到最大值

讯享网&nbsp;&nbsp;&nbsp;&nbsp;max(iterable,&nbsp;*[,&nbsp;default=obj,&nbsp;key=func])&nbsp;-&gt;&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp;max(arg1,&nbsp;arg2,&nbsp;args,&nbsp;[,&nbsp;key=func])&nbsp;-&gt;&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;With&nbsp;a&nbsp;single&nbsp;iterable&nbsp;argument,&nbsp;return&nbsp;its&nbsp;biggest&nbsp;item.&nbsp;The&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;keyword-only&nbsp;argument&nbsp;specifies&nbsp;an&nbsp;object&nbsp;to&nbsp;return&nbsp;if &nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;provided&nbsp;iterable&nbsp;is&nbsp;empty. &nbsp;&nbsp;&nbsp;&nbsp;With&nbsp;two&nbsp;or&nbsp;more&nbsp;arguments,&nbsp;return&nbsp;the&nbsp;largest&nbsp;argument.

86.写出这段代码的输出结果

num=9def&nbsp;f1(): &nbsp;&nbsp;&nbsp;&nbsp;num=20def&nbsp;f2(): &nbsp;&nbsp;&nbsp;&nbsp;print(num) f2() f1() f2()

结果:
9
9

常见的报错问题

讯享网AttributeError&nbsp;试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError&nbsp;输入/输出异常;基本上是无法打开文件 ImportError&nbsp;无法引入模块或包;基本上是路径问题或名称错误 IndentationError&nbsp;语法错误(的子类)&nbsp;;代码没有正确对齐 IndexError&nbsp;下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError&nbsp;试图访问字典里不存在的键 KeyboardInterrupt&nbsp;Ctrl+C被按下 NameError&nbsp;使用一个还未被赋予对象的变量SyntaxError&nbsp;Python代码非法,代码不能编译(个人认为这是语法错误,写错了)TypeError&nbsp;传入对象类型与要求的不符合 UnboundLocalError&nbsp;试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量, 导致你以为正在访问它 ValueError&nbsp;传入一个调用者不期望的值,即使值的类型是正确的`



作者:_Caesar
链接:https://www.jianshu.com/p/c5b649eef774
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

小讯
上一篇 2025-04-22 22:05
下一篇 2025-05-24 12:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/191347.html