




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
精心整理170道Python面試題
精心整理的Python相關(guān)的基礎(chǔ)知識(shí),用于面試,或者平時(shí)
復(fù)習(xí),都是很好的!廢話不多說,直接開搞
由于文章過長(zhǎng),蘿卜哥也貼心的把文章整理成了PDF文檔,
在文末查看獲取方式
基礎(chǔ)篇
1.為什么學(xué)習(xí)Python
2.解釋型和編譯型語言的區(qū)別
3.簡(jiǎn)述下Python中的字符串、列表、元組和字典
4.簡(jiǎn)述上述數(shù)據(jù)類型的常用方法
5.簡(jiǎn)述Python中的字符串編碼
6.一行代碼實(shí)現(xiàn)數(shù)值交換
7.is和==的區(qū)別
8.Python函數(shù)中的參數(shù)類型
9.'米arg'和'**kwarg'作用
10.一行代碼實(shí)現(xiàn)1-100之和
11.獲取當(dāng)前時(shí)間
12.PEP8規(guī)范
13.Python的深淺拷貝
14.查看下面代碼的輸出
15.可變類型與不可變類型
16.打印九九乘法表
17.filter>map、reduce的作用
18.re的match和search區(qū)別
19.面向?qū)ο笾?_new_'和'_init_'區(qū)別
20.三元運(yùn)算規(guī)則
21.生成隨機(jī)數(shù)
22.zip函數(shù)用法
23.range和xrange的區(qū)別
24.with方法打開文件的作用
25.什么是正則的貪婪匹配
26.為什么不建議函數(shù)的默認(rèn)參數(shù)傳入可變對(duì)象
27.字符串轉(zhuǎn)列表
28.字符串轉(zhuǎn)整數(shù)
29.刪除列表中的重復(fù)值
30.字符串單詞統(tǒng)計(jì)
31.列表推導(dǎo),求奇偶數(shù)
32.一行代碼展開列表
33.實(shí)現(xiàn)二分法查找函數(shù)
34.字典和json轉(zhuǎn)換
35.列表推導(dǎo)式、字典推導(dǎo)式和生成器
36.簡(jiǎn)述read^readline>readlines的區(qū)別
37.打亂一個(gè)列表
38.反轉(zhuǎn)字符串
39.單下劃線和雙下劃線的作用
40.新式類和舊式類
41.Python面向?qū)ο笾械睦^承有什么特點(diǎn)
42.super函數(shù)的作用
43.類中的各種函數(shù)
44.如何判斷是函數(shù)還是方法
45.isinstance的作用以及與type()的區(qū)別
46.單例模式與工廠模式
47.查看目錄下的所有文件
48.計(jì)算1到5組成的互不重復(fù)的三位數(shù)
49.去除字符串首尾空格
50.去除字符串中間的空格
51.字符串格式化方式
52.將”helloworld”轉(zhuǎn)換為首字母大寫"HelloWorld”(不使用
title函數(shù))
53.一行代碼轉(zhuǎn)換列表中的整數(shù)為字符串
54.合并兩個(gè)元組到字典
55.給出如下代碼的輸入,并簡(jiǎn)單解釋
56.Python中的反射
57.實(shí)現(xiàn)一個(gè)簡(jiǎn)單的API
58.metaclass兀類
59.sort和sorted的區(qū)別
60.Python中的GIL
61.產(chǎn)生8位隨機(jī)密碼
62.輸出原始字符
63.列表內(nèi),字典按照value大小排序
64.簡(jiǎn)述any()和all()方法
65.反轉(zhuǎn)整數(shù)
66.函數(shù)式編程
67.簡(jiǎn)述閉包
68.簡(jiǎn)述裝飾器
69.協(xié)程的優(yōu)點(diǎn)
70.實(shí)現(xiàn)一個(gè)斐波那契數(shù)列
71.正則切分字符串
72.yield用法
73.冒泡排序
74快速排序
75.requests簡(jiǎn)介
76.比較兩個(gè)json數(shù)據(jù)是否相等
77.讀取鍵盤輸入
78.enumerate
79.pass語句
80.正則匹配郵箱
81.統(tǒng)計(jì)字符串中大寫字母的數(shù)量
82.json序列化時(shí)保留中文
83.簡(jiǎn)述繼承
84.什么是猴子補(bǔ)丁
85.help()函數(shù)和dir()函數(shù)
86.解釋Python中的和'**'運(yùn)算符
87.主動(dòng)拋出異常
88.tuple和list轉(zhuǎn)換
89.簡(jiǎn)述斷言
9。.什么是異步非阻塞
91.什么是負(fù)索引
92.退出Python后,內(nèi)存是否全部釋放
93.Flask和Django的異同
94.創(chuàng)建刪除操作系統(tǒng)上的文件
95.簡(jiǎn)述logging模塊
96.統(tǒng)計(jì)字符串中單詞出現(xiàn)次數(shù)
97.正則plie的作用
98.tryexceptelsefinally的意義
99.反轉(zhuǎn)列表
100.字符串中數(shù)字替換
綜合篇:網(wǎng)絡(luò)編程
101.簡(jiǎn)述OSI七層協(xié)議
102.三次握手、四次揮手的流程
103.什么是C/S和B/S架構(gòu)
104.TCP和UDP的區(qū)別
105.局域網(wǎng)和廣域網(wǎng)
106.arp協(xié)議
107.什么是socket?簡(jiǎn)述基于TCP協(xié)議的套接字通信流程
108.簡(jiǎn)述進(jìn)程、線程、協(xié)程的區(qū)別以及應(yīng)用場(chǎng)景
109.如何使用線程池和進(jìn)程池
110.進(jìn)程之間如何進(jìn)行通信
111.進(jìn)程鎖和線程鎖
112.什么是并發(fā)和并行
113.threading.local的作用
114.什么是域名解析
115.LVS是什么及作用
116.Nginx的作用
117.keepalived及HAProxy
118.什么是rpc
119.從瀏覽器輸入一個(gè)網(wǎng)址到展示網(wǎng)址頁面的過程
120.什么是cdn
綜合篇:數(shù)據(jù)庫和框架
121.列舉常見的數(shù)據(jù)庫
122.數(shù)據(jù)庫設(shè)計(jì)三大范式
123.什么是數(shù)據(jù)庫事務(wù)
124.MySQL索引種類
125.數(shù)據(jù)庫設(shè)計(jì)中一對(duì)多和多對(duì)多的應(yīng)用場(chǎng)景
126.簡(jiǎn)述觸發(fā)器、函數(shù)、視圖、存儲(chǔ)過程
127.常用SQL語句
128.主鍵和外鍵的區(qū)別
129.如何開啟MySQL慢日志查詢
130.MySQL數(shù)據(jù)庫備份命令
131.char和varchar的區(qū)別
132.最左前綴原則
133.無法命中索引的情況
134.數(shù)據(jù)庫讀寫分離
135.數(shù)據(jù)庫分庫分表
136.redis和memcachecl比較
137.redis中數(shù)據(jù)庫默認(rèn)是多少個(gè)db及作用
138.redis有哪幾種持久化策略
139.redis支持的過期策略
140.如何保證redis中的數(shù)據(jù)都是熱點(diǎn)數(shù)據(jù)
141.Python操作redis
142.基于redis實(shí)現(xiàn)發(fā)布和訂閱
143.如何高效的找到redis中的某個(gè)KEY
144.基于redis實(shí)現(xiàn)先進(jìn)先出、后進(jìn)先出及優(yōu)先級(jí)隊(duì)列
145.redis如何實(shí)現(xiàn)主從復(fù)制
146.循環(huán)獲取redis中某個(gè)非常大的列表數(shù)據(jù)
147.redis中的watch的命令的作用
148.redis分布式鎖
149.http協(xié)議
150.uwsgi,uWSGI和WSGI的區(qū)別
151.HTTP狀態(tài)碼
152.HTTP常見請(qǐng)求方式
153.響應(yīng)式布局
154.實(shí)現(xiàn)一個(gè)簡(jiǎn)單的AJAX請(qǐng)求
155.同源策略
156.什么是CORS
157.什么是CSRF
158.前端實(shí)現(xiàn)輪詢、長(zhǎng)輪詢
159.簡(jiǎn)述MVC和MTV
160.接口的幕等性
161.Flask框架的優(yōu)勢(shì)
162.什么是ORM
163.PV、UV的含義
164.supervisor的作用
165.使用ORM和原生SQL的優(yōu)缺點(diǎn)
166.列舉一些cljango的內(nèi)置組件
167.列舉Django中執(zhí)行原生sql的方法
168.cookie和session的區(qū)別
169.beautifulsoup模塊的作用
170.Selenium模塊簡(jiǎn)述
基礎(chǔ)篇
1.為什么學(xué)習(xí)Python
Python語言簡(jiǎn)單易懂,上手容易,隨著AI風(fēng)潮,越來越火
2.解釋型和編譯型語言的區(qū)別
編譯型語言:把做好的源程序全部編譯成二進(jìn)制的可運(yùn)行程
序。然后,可直接運(yùn)行這個(gè)程序。如:C,C++解釋型語言:
把做好的源程序翻譯一句,然后執(zhí)行一句,直至結(jié)束!如:
Python,(Java有些特殊,java程序也需要編譯,但是沒有
直接編譯稱為機(jī)器語言,而是編譯稱為字節(jié)碼,然后用解釋
方式執(zhí)行字節(jié)碼。)
3.簡(jiǎn)述下Python中的字符串、列表、元組和
字符串(str):字符串是用引號(hào)括起來的任意文本,是編程
語言中最常用的數(shù)據(jù)類型。列表(list):列表是有序的集合,
可以向其中添加或刪除元素。元組(tuple):元組也是有序
集合,但是是無法修改的。即元組是不可變的。字典(diet):
字典是無序的集合,是由key-value組成的。集合(set):
是一組key的集合,每個(gè)元素都是唯一,不重復(fù)且無序的。
4.簡(jiǎn)述上述數(shù)據(jù)類型的常用方法
字符串:
切片mystr='luobodazahui'mystr[l:3]output'no'
2.
3.
formatmystr2="welcometoluobodazahui,dear{name}',
mystrZ.fb門nat(name="baby")output'welcometoluobodazahui,
dearbaby,
4.
5.
join可以用來連接字符串,將字符串、元組、列表中的元素
以指定的字符(分隔符)連接生成一個(gè)新的字符串。mylist二
'bo','da','za','hui'2jmystrS=-'.join(mylist)print(mystrS)
outout'luo-bo-da-za-hui'
6.
7.
replaceString.replace(old,new,count)將字符串中的old字符
替換為New字符,count為替換的個(gè)數(shù)mystr4=
'luobodazahui-haha'print(mystr4.replace('haha','good'))
8.
outputluobodazahui-good
1.split切割字符串,得到一個(gè)列表
|mystr5='luobo,dazahuigood
print(mystr5.splil。)|
print(mystr5.splil('h'))|
print(mystr5.splil(7))|
output
)o,daza*,*ui|
[luobo'Jdazahuigood']
列表:
1.切片同字符串
2.append和extend向列表中國(guó)添加兀素
[mylistl.append(mylist2)|
|mylist3.extend(mylis⑵]
outout
1.刪除元素del:根據(jù)下標(biāo)進(jìn)行刪除pop:刪除最后一個(gè)
元素remove:根據(jù)元素的值進(jìn)行刪除
向dist4=[履,b,七',d]|
debnylist4f(j
print(mylist4)|
ii「:
|mylist4.remove('c')|
print(rnylist4)^^B
output
b,'c',d]
1.元素排序sort:是將list按特定順序重新排列,默認(rèn)為
由小到大,參數(shù)reverse=True可改為倒序,由大到小。
reverse:是將list逆置
|mylist5.sortQ^^^^B
|my1ist5.reverseQ^^B
卜門nilnnqi、l5)唯■徐■
output
U,2,3,4,5]|
I-Mil
字典:
1.清空字典dict.clear()
Wict^^e^^e^2)
1
output
1.指定刪除使用pop方法來指定刪除字典中的某一項(xiàng)
[ictl={key「:l,'key2,:2}
output
{key2':2}
1.遍歷字典
klict^^lceW^^Jkey2^2}^H
|mykey=[keyforkeyindiet對(duì)
|myvalue=[valueforvalueindict2.values()]|
|key_value=[(k,v)fork,vindict2.items()])
output
gey^ey2]^^B
1.fromkeys用于創(chuàng)建一個(gè)新字典,以序列中元素做字典的
鍵,value為字典所有鍵對(duì)應(yīng)的初始值
[keys=「zhangfei;'guanyu;'liubei;'zhaoyun']|
output
'zhangfei':0,'guanyu':0,'liubei':0,'zhaoyurf:0}
5.簡(jiǎn)述Python中的字符串編碼
計(jì)算機(jī)在最初的設(shè)計(jì)中,采用了8個(gè)比特(bit)作為一個(gè)字
節(jié)(byte)的方式。一個(gè)字節(jié)能表示的最大的整數(shù)就是255
(二進(jìn)制11111111二十進(jìn)制255),如果要表示更大的整數(shù),
就必須用更多的字節(jié)。最早,計(jì)算機(jī)只有ASCII編碼,即只
包含大小寫英文字母、數(shù)字和一些符號(hào),這些對(duì)于其他語言,
如中文,日文顯然是不夠用的。后來又發(fā)明了Unicode,
Unicode把所有語言都統(tǒng)一到一套編碼里,這樣就不會(huì)再有
亂碼問題了。當(dāng)需要保存到硬盤或者需要傳輸?shù)臅r(shí)候,就轉(zhuǎn)
換為UTF-8編碼。UTF-8是隸屬于Unicode的可變長(zhǎng)的編
碼方式。在Python中,以Unicode方式編碼的字符串,可
以使用encode()方法來編碼成指定的bytes,也可以通過
decodeQ方法來把bytes編碼成字符串。encode
中文”.encode('utf-8')
output
b,\xe4\xb8\xad\xe6\x96\x871
decode
b*\xe4\xb8\xad\xe6\x96\x87,.decode(,utf-8,)
output
中文
6.一行代碼實(shí)現(xiàn)數(shù)值交換
la=1
|3a,b=b,a|
|4print(a,國(guó)
output
121
7.is和二二的區(qū)別
先來看個(gè)例子
|Kint(cis(1)|
brint(c==d)|
print(cise)?
print(c二二e)|
output
fnuel
二二是比較操作符,只是判斷對(duì)象的值(value)是否一致,
而is則判斷的是對(duì)象之間的身份(內(nèi)存地址)是否一致。
對(duì)象的身份,可以通過id()方法來查看
output
B8^808d
K855828S
可以看出,只有id一致時(shí),is比較才會(huì)返回True,而當(dāng)
value一致時(shí),:——比較就會(huì)返回True
8.Python函數(shù)中的參數(shù)類型
位置參數(shù),默認(rèn)參數(shù),可變參數(shù),關(guān)鍵字參數(shù)
允許我們?cè)谡{(diào)用函數(shù)的時(shí)候傳入多個(gè)實(shí)參
|deftest(*arg,**kwarg):?
|if
test('ni','hao',key='world')[
output
[kearg:{'key':'world'}
可以看出,*arg會(huì)把位置參數(shù)轉(zhuǎn)化為tuple**kwarg會(huì)把關(guān)鍵
字參數(shù)轉(zhuǎn)化為diet
10.一行代碼實(shí)現(xiàn)1-100之和
|sum(range(l,101)
11.獲取當(dāng)前時(shí)間
[import
|print(datetime.datetim6.now(5)^^^^^^^^^B
output
|2019-06-0718:12:11.16533(
P01WS)^8JTH^^B
12.PEP8規(guī)范
簡(jiǎn)單列舉10條:盡量以免單獨(dú)使用小寫字母T,大寫字母,O)
以及大寫字母T等容易混淆的字母。函數(shù)命名使用全部小寫
的方式,可以使用下劃線。常量命名使用全部大寫的方式,
可以使用下劃線。使用has或is前綴命名布爾元素,如:
is_connect二True;has_member=False不要在行尾加分號(hào),
也不要用分號(hào)將兩條命令放在同一行。不要使用反斜杠連接
行。頂級(jí)定義之間空2行,方法定義之間空1行,頂級(jí)定義
之間空兩行。如果一個(gè)類不繼承自其它類,就顯式的從object
繼承。內(nèi)部使用的類、方法或變量前,需加前綴—表明此為內(nèi)
部使用的。要用斷言來實(shí)現(xiàn)靜態(tài)類型檢測(cè)。
13.Python的深淺拷貝
淺拷貝
|list2=copy.copy(listl)|
|list2,appendCa5^^^B
IprinKlistIJist2)^HB
output
『1,2,3,[1,2,'a']][1,2,3,[1,2,'a'],'a']|
能夠看出,淺拷貝只成功”獨(dú)立“拷貝了列表的外層,而列表
的內(nèi)層列表,還是共享的
深拷貝
|list3=copy.deepcopy(list1)|
|list3.appendCa^^^^^^^1
卜門nl(li、iLli、[3
output
,2,3,[1,2]]n,2,3JL2,'a'],'a']|
深拷貝使得兩個(gè)列表完全獨(dú)立開來,每一個(gè)列表的操作,都
不會(huì)影響到另一個(gè)
14.查看下面代碼的輸出
pefnum():
return[lambdax:i*xforiinrange(4)]]
1)min
output
『3,3,3,3]|
通過運(yùn)行結(jié)果,可以看出i的取值為3,很神奇
15.可變類型與不可變類型
可變數(shù)據(jù)類型:list、dict>set
不可變數(shù)據(jù)類型:int/float、str>tuple
16.打印九九乘法表
|foriinrange(l,
|forjinrange(1,i+1
output
1*1=1
2*1=22*2=4
^^9*^89*^79*4^69*^59^=5^^=639^=729*9=81
print函數(shù),默認(rèn)是會(huì)換行的,其有一個(gè)默認(rèn)參數(shù)end,如果
像例子中,我們把end參數(shù)顯示的置為"",那么print函數(shù)
執(zhí)行完后,就不會(huì)換行了,這樣就達(dá)到了九九乘法表的效果
T
17.filter>map、reduce的作用
filter函數(shù)用于過濾序列,它接收一個(gè)函數(shù)和一個(gè)序列,把函
數(shù)作用在序列的每個(gè)元素上,然后根據(jù)返回值是True還是
False決定保留還是丟棄該元素
|list(filter(lambdax:x%2二二1,mylistH
output
1,3,5,7,幻
保留奇數(shù)列表
map函數(shù)傳入一個(gè)函數(shù)和一個(gè)序列,并把函數(shù)作用到序列的
每個(gè)元素上,返回一個(gè)可迭代對(duì)象
|list(map(lambdax:x*2,mylist))
output
『2,4,6,8,10,12,14,16,18]|
reduce函數(shù)用于遞歸計(jì)算,同樣需要傳入一個(gè)函數(shù)和一個(gè)序
列,并把函數(shù)和序列元素的計(jì)算結(jié)果與下一個(gè)元素進(jìn)行計(jì)算
,educe(lambdax,y:x+y,range。01))|
output
505(
可以看出,上面的三個(gè)函數(shù)與匿名函數(shù)相結(jié)合使用,可以寫
出強(qiáng)大簡(jiǎn)潔的代碼
18.re的match和search區(qū)別
match。函數(shù)只檢測(cè)要匹配的字符是不是在string的開始位
置匹配,search。會(huì)掃描整個(gè)string查找匹配
19.面向?qū)ο笾衉new—和—init
_new_是在實(shí)例創(chuàng)建之前被調(diào)用的,因?yàn)樗娜蝿?wù)就是創(chuàng)建
實(shí)例然后返回該實(shí)例對(duì)象,是個(gè)靜態(tài)方法。_init_是當(dāng)實(shí)例
對(duì)象創(chuàng)建完成后被調(diào)用的,然后設(shè)置對(duì)象屬性的一些初始
值,通常用在初始化一個(gè)類實(shí)例的時(shí)候,是一個(gè)實(shí)例方法
1、_new_至少要有一個(gè)參數(shù)cis,代表當(dāng)前類,此參數(shù)在實(shí)
例化時(shí)由Python解釋器自動(dòng)識(shí)別。2、—new—必須要有返
回值,返回實(shí)例化出來的實(shí)例,這點(diǎn)在自己實(shí)現(xiàn)_new_時(shí)要
特別注意,可以return父類(通過super(當(dāng)前類名,cis))
—new—出來的實(shí)例,或者直接是object的—new—出來的實(shí)
例。3、_init_有一個(gè)參數(shù)self,就是這個(gè)_new_返回的實(shí)例,
_init_在_new_的基礎(chǔ)上可以完成一些其它初始化的動(dòng)作,
_init_不需要返回值。4、如果_new_創(chuàng)建的是當(dāng)前類的實(shí)
例,會(huì)自動(dòng)調(diào)用_init_函數(shù),通過return語句里面調(diào)用的
_new_函數(shù)的第一個(gè)參數(shù)是cis來保證是當(dāng)前類實(shí)例,如果
是其他類的類名,;那么實(shí)際創(chuàng)建返回的就是其他類的實(shí)例,
其實(shí)就不會(huì)調(diào)用當(dāng)前類的_init_函數(shù),也不會(huì)調(diào)用其他類的
_init_函數(shù)
20.三元運(yùn)算規(guī)則
M—MW
output
21.生成隨機(jī)數(shù)
print(random.randint(1,100))|
print(random.unilbrm(1.5.))■
output
0.03765019937131564
1.8458555362279228
22.zip函數(shù)用法
zip()函數(shù)將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打
包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表
卜、H/11山、?!、m)腐■■,^^亶
output
■'zhangfei;0),('guanyu:3),('liubei:2),('zhaoyun',4)]|
23.range和xrange的區(qū)別
range([startjstop],step]),根據(jù)start與stop指定的范圍以
及step設(shè)定的步長(zhǎng),生成一個(gè)序列。而xrange生成一個(gè)生
成器,可以很大的節(jié)約內(nèi)存
24.with方法打開文件的作用
開文件在進(jìn)行讀寫的時(shí)候可能會(huì)出現(xiàn)一些異常狀況,如果按
照常規(guī)的f.open寫法,我們需要try,except,finally,做異常
判斷,并且文件最終不管遇到什么情況,都要執(zhí)行finally
f.close()關(guān)閉文件,with方法幫我們實(shí)現(xiàn)了finally中f.close
25.什么是正則的貪婪匹配
Python中默認(rèn)是貪婪匹配模式
貪婪模式:正則表達(dá)式一般趨向于最大長(zhǎng)度匹配
非貪婪模式:在整個(gè)表達(dá)式匹配成功的前提下,盡可能少的
匹配
26.為什么不建議函數(shù)的默認(rèn)參數(shù)傳入可變對(duì)象
例如:
denest(L=n)^^B
|L.appendCtest)|
output
|test()#[test;test』
默認(rèn)參數(shù)是一個(gè)列表,是可變對(duì)象口,Python在函數(shù)定義的
時(shí)候,默認(rèn)參數(shù)L的值就被計(jì)算出來了,是口,每次調(diào)用函
數(shù),如果L的值變了,那么下次調(diào)用時(shí),默認(rèn)參數(shù)的值就已
經(jīng)不再是口了
27.字符串轉(zhuǎn)列表
mysti^^K23j
|mystT.split(',')[
output
28.字符串轉(zhuǎn)整數(shù)
|list(map(lambdax:im(x),mylist))|
output
1,2,3]
29.刪除列表中的重復(fù)值
|list(sct(in
30.字符串單詞統(tǒng)計(jì)
[fromcollectionsimport
|mystr='sdfsfsfsdfsd^ere^rhrgege.sdfweisfsdfe]
'r':3,
31.列表推導(dǎo),求奇偶數(shù)
|[xforxinrange(lO)ifx%2==1
output
L3,5,7,91
32.一行代碼展開列表
output
|[1,2,3,4,5,6]|
33.實(shí)現(xiàn)二分法查找函數(shù)
二分查找算法也稱折半查找,基本思想就是折半,對(duì)比大小
后再折半查找,必須是有序序列才可以使用二分查找
遞歸算法
Idefbinary_search(data,
|return
|!..■:!ii->inaiA_searcii!diHa|:inid|,ileir.J
|returnbinary_search(data[mid+1:],item)|
|return
binarysearch(listl,999)
非遞歸算法
defbinary_search(data,item):|
n=len(data)^^^^^B
last=n-
whilefirst<=last:^^[
mid=(first+last)〃:|
ifdatafmid]==item:|
returnTrue^^^B
elifdata[mid]>item:|
last=mid-1
else:
first=mid+1
|return
|binary_search(listl,99)|
34.字典和json轉(zhuǎn)換
字典轉(zhuǎn)json
importjson
|dictl={'zhangfei':l,"liubei”:2,“guanyu“:4,“zhaoyun":3}|
|myjson=json.dumps(dictl)|
output]
dic〔j、(巾」ckn〕、卜川
invdict
output
'zhangfei':1,'liubei':2,'guanyu':4,'zhaoyun':3}
35.列表推導(dǎo)式、字典推導(dǎo)式和生成器
|import
|ge_list=(iforiin
output
列表推導(dǎo)式[0,1,2,3,4,5,6,7,8,9](class'list',
上成器(generatorobject<genexpr>at0x0139F070>|
36.簡(jiǎn)述read、readline>readlines的區(qū)別
read讀取整個(gè)文件
readline讀取下一行,使用生成器方法
readlines讀取整個(gè)文件到一個(gè)迭代器以供我們遍歷
37.打亂一個(gè)列表
|random.shuffle(list2)|
「門:山—
output
『4,6,5,1,2,31
38.反轉(zhuǎn)字符串
卜皿二'luobodazahui
output
iuhazadoboul
39.單下劃線和雙下劃線的作用
_foo_:一種約定,Python內(nèi)部的名字,用來區(qū)別其他用戶
自定義的命名,以防沖突,就是例如_init_(),_del_(),_calL_()
些特殊方法
_foo:一種約定,用來指定變量私有。不能用frommodule
import米導(dǎo)入,其他方面和公有變量一樣訪問
—f00:這個(gè)有真正的意義:解析器用,屈$惘!116—foo來代替這
個(gè)名字,以區(qū)別和其他類相同的命名,它無法直接像公有成
員一樣隨便訪問,通過對(duì)象名.一類名—XXX這樣的方式可以訪
問
4。.新式類和舊式類
a.在python里凡是繼承了object的類,都是新式類
b.Pythons里只有新式類
c.Pythons里面繼承object的是新式類,沒有寫父類的是經(jīng)
典類
d.經(jīng)典類目前在Python里基本沒有應(yīng)用
41.Python面向?qū)ο笾械睦^承有什么特點(diǎn)
a.同時(shí)支持單繼承與多繼承,當(dāng)只有一個(gè)父類時(shí)為單繼承,
當(dāng)存在多個(gè)父類時(shí)為多繼承
b.子類會(huì)繼承父類所有的屬性和方法,子類也可以覆蓋父類
同名的變量和方法
c.在繼承中基類的構(gòu)造(_init_())方法不會(huì)被自動(dòng)調(diào)用,
它需要在其派生類的構(gòu)造中專門調(diào)用
d.在調(diào)用基類的方法時(shí),需要加上基類的類名前綴,且需要
帶上self參數(shù)變量。區(qū)別于在類中調(diào)用普通函數(shù)時(shí)并不需要
帶上self參數(shù)
42.super函數(shù)的作用
super()函數(shù)是用于調(diào)用父類(超類)的一個(gè)方法
class
class
super(B,self).funcA()
|ins.funcA_in_B0|
Hns^hincCO^^H
output
thisisfunc囚
thisisfuncC
43.類中的各種函數(shù)
主要分為實(shí)例方法、類方法和靜態(tài)方法
實(shí)例方法
定義:第一個(gè)參數(shù)必須是實(shí)例對(duì)象,該參數(shù)名一般約定為
"self,通過它來傳遞實(shí)例的屬性和方法(也可以傳類的屬性
和方法)
調(diào)用:只能由實(shí)例對(duì)象調(diào)用
類方法
定義:使用裝飾器@classmethod。第一個(gè)參數(shù)必須是當(dāng)前類
對(duì)象,該參數(shù)名一般約定為“cis”,通過它來傳遞類的屬性和
方法(不能傳實(shí)例的屬性和方法)
調(diào)用:實(shí)例對(duì)象和類對(duì)象都可以調(diào)用
靜態(tài)方法
定義:使用裝飾器@staticmethod。參數(shù)隨意,沒有“self和“c】s”
參數(shù),但是方法體中不能使用類或?qū)嵗娜魏螌傩院头椒?/p>
調(diào)用:實(shí)例對(duì)象和類對(duì)象都可以調(diào)用
靜態(tài)方法是類中的函數(shù),不需要實(shí)例。靜態(tài)方法主要是用來
存放邏輯性的代碼,主要是一些邏輯屬于類,但是和類本身
沒有交互。即在靜態(tài)方法中,不會(huì)涉及到類中的方法和屬性
的操作??梢岳斫鉃閷㈧o態(tài)方法存在此類的名稱空間中
類方法是將類本身作為對(duì)象進(jìn)行操作的方法。他和靜態(tài)方法
的區(qū)別在于:不管這個(gè)方式是從實(shí)例調(diào)用還是從類調(diào)用,它
都用第一個(gè)參數(shù)把類傳遞過來
44.如何判斷是函數(shù)還是方法
與類和實(shí)例無綁定關(guān)系的function都屬于函數(shù)(function)
與類和實(shí)例有綁定關(guān)系的function都屬于方法(method)
普通函數(shù):
Iy、T」「1
|@staticmethod^^^^^^^M
|@classmethod^^^^^^^M
|deffunc4(cls)i^^^^^^^M
people=
|‘門「」1Ii「
卜「in〔(I-pk.「um、4
output
kbounchrietho^eopleifunc^^^^naii^JPeopl^bjec^UkO^BSCQO^J
〈boundmclhodPeople.func4of〈class_main_.Peoplc'?^mMMMH|
45.isinstance的作用以及與type()的區(qū)別
isinstance()函數(shù)來判斷一個(gè)對(duì)象是否是一個(gè)已知的類型,類
似type()
區(qū)別:
type()不會(huì)認(rèn)為子類是一種父類類型,不考慮繼承關(guān)系
isinstance()會(huì)認(rèn)為子類是一種父類類型,考慮繼承關(guān)系
classA(object):^^M
class
print(isinstance(b,A))|
l"1L\-d:「\).
p「int(type(b)=二A),.
output
fTrue|
ruc[
True]
Esd
46.單例模式與工廠模式
單例模式:主要目的是確保某一個(gè)類只有一個(gè)實(shí)例存在
工廠模式:包涵一個(gè)超類,這個(gè)超類提供一個(gè)抽象化的接口
來創(chuàng)建一個(gè)特定類型的對(duì)象,而不是決定哪個(gè)對(duì)象可以被創(chuàng)
建
47.查看目錄下的所有文件
〔import
|print(os.listdir('.,))l
48.計(jì)算1到5組成的互不重復(fù)的三位數(shù)
#1到5組成的4:不重復(fù)的三位
forjinrange(l,6):M
forzinrange。,豆
print(”%s%s%s”%(i,j,z))|
output
49.去除字符串首尾空格
g^^^^Tell^iihao
「「I,7門「
output
,hellonihaol
50.去除字符串中間的空格
str2="helloyouaregood
■■
output
|hcH()y()ua「cgs)d.
I'helloyouaregood'l
51.字符串格式化方式
i,使用%操作符
output
rhi^^b^Python^^^^B
ThisisforPython,andYou|
1.str.format
在Pythons中,引入了這個(gè)新的字符串格式化方法
print("Thisis{name},hopeyoucan{do}”.format(name="zhouluob”,do="like"))|
output
[Thisismychat|
Thisiszhouluob,hopeyoucanlike
1.f-strings
在Python3-6中,引入了這個(gè)新的字符串格式化方法
print(f'hello{name}”)
output
helloluobodazahui
一個(gè)復(fù)雜些的例子:
|defmytest(name,
|returnf”helk){name},youare{age}yearsold?
output
|helloluobo,youare20yearsold!|
52.將“helloworld”轉(zhuǎn)換為首字母大寫“Hello
World”(不使用title函數(shù))
output
HelloWorlcj
meH^orkll
53.一行代碼轉(zhuǎn)換列表中的整數(shù)為字符串
如:口,2,刃->[叮",“2“,“31
|list(map(lambdax:str(x),listl))|
output
54.合并兩個(gè)元組到字典
如:("zhangfei'*,"guanyu"),(66,80)->{'zhangfei':66,'guanyu':
80}
^^^zhangfeT/^uanyu"
1#c;
output
'zhangfei':66,'guanyu':80}
55.給出如下代碼的輸入,并簡(jiǎn)單解釋
例子1:
|a=(l,2,3,[4,5,6,7],8)|
的同0
output
|TypeErrorTraceback(mostrecentcalllast)
<i”[hcm-inpu[-35-59469d550cb()〉invmodu
FypeError:'tuple'objectdoesnotsupportitemassignment]
例子2:
output
|(1,2,3,[4,5,2,7],8)|
從例子1的報(bào)錯(cuò)中也可以看出,tuple是不可變類型,不能改
變tuple里的元素,例子2中,list是可變類型,改變其元
素是允許的
56.Python中的反射
反射就是通過字符串的形式,導(dǎo)入模塊;通過字符串的形式,
去模塊尋找指定函數(shù),并執(zhí)行。利用字符串的形式去對(duì)象(模
塊)中操作(查找/獲取/刪除/添加)成員,一種基于字符
串的事件驅(qū)動(dòng)!
簡(jiǎn)單理解就是用來判斷某個(gè)字符串是什么,是變量還是方法
|classNewClass(object):^^^^^^M
|def_init_(self,name,
|二
|def
|print(fMynameis{}')|
|print(fIama{
|print(gctaHr(pcoplc、
output
Truej
luobq
即1
getattr,hasattr,setattr,delattr對(duì)模塊的修改都在內(nèi)存中進(jìn)行,
并不會(huì)影響文件中真實(shí)內(nèi)容
57.實(shí)現(xiàn)一個(gè)簡(jiǎn)單的API
使用flask構(gòu)造web服務(wù)器
IromflaskiiriportFlask,rcquc[U
|def
|■result=request.geIt_json()^^B
58.metaclass兀類
類與實(shí)例:
首先定義類以后,就可以根據(jù)這個(gè)類創(chuàng)建出實(shí)例,所以:先
定義類,然后創(chuàng)建實(shí)例
類與元類:
先定義元類,根據(jù)metaclass創(chuàng)建出類,所以:先定義
metaclass,然后創(chuàng)建類
classMyMetaclass(type):
def_new_(cis,class_name,class_parents,class_attr):
class_attr['print']="thisismymetaclass'ssubclass%s"%class_name|
returntype.—new—(cis,class_name,class_parents,class_attr)
classMyNewclass(obiect,metaclass=MyMetaclass):
pass
|myinstance=MyNewclass()|
output
「thisismymetaclass'ssubclassMyNewclass”
59.sort和sorted的區(qū)別
sort()是可變對(duì)象列表(list)的方法,無參數(shù),無返回值,
sort()會(huì)改變可變對(duì)象
Rictl='test2':2}
1H8I-HBM
|print(listl.sort()
output
NoneB
sorted()是產(chǎn)生一個(gè)新的對(duì)象。sorted(L)返回一個(gè)排序后的
L,不改變?cè)嫉腖,sorted。適用于任何可迭代容器
Hictl=lest2':2}
listl=[2,1,3]
)rint(sorted(dict1))print(sorted(list1))|
output
□,2,3]
60.Python中的GIL
GIL是Python的全局解釋器鎖,同一進(jìn)程中假如有多個(gè)線
程運(yùn)行,一個(gè)線程在運(yùn)行Python程序的時(shí)候會(huì)占用Python
解釋器(加了一把鎖即GIL),使該進(jìn)程內(nèi)的其他線程無法
運(yùn)行,等該線程運(yùn)行完后其他線程才能運(yùn)行。如果線程運(yùn)行
過程中遇到耗時(shí)操作,則解釋器鎖解開,使其他線程運(yùn)行。
所以在多線程中,線程的運(yùn)行仍是有先后順序的,并不是同
時(shí)進(jìn)行
61.產(chǎn)生8位隨機(jī)密碼
|import
1.join(random.choice(string.printable[:-7])foriinrange(5|
output
|,d5ANdNJp||
62.輸出原始字符
print(rhello\nwoiid')|
output
■■
63.列表內(nèi),字典按照value大小排序
^^fname^liubef/age^3^^B
|sort6d(listl,key=lambdax:x「age'])|
output
|{'name,:'guanyiT,'age,:29},?
64.簡(jiǎn)述any()和all()方法
all如果存在0NullFalse返回False,否則返回True;any
如果都是0,None,False,Null時(shí),返回True
print(any([O,None,False]))|
output
ralsd
Falsq
65.反轉(zhuǎn)整數(shù)
Idefreverse_int(x):^^^B
|ifnotisinstance(x,int)
|returnFals^^^^M
Itmp=str(x)^^^^^M
|tmp=
|returnint(tmp)^^B
|tmp=tmp[l:][::-1]■
Ix=int(tmp)^^^^J
output
-73832
首先判斷是否是整數(shù),再判斷是否是一位數(shù)字,最后再判斷
是不是負(fù)數(shù)
66.函數(shù)式編程
函數(shù)式編程是一種抽象程度很高的編程范式,純粹的函數(shù)式
編程語言編寫的函數(shù)沒有變量,因此,任意一個(gè)函數(shù),只要
輸入是確定的,輸出就是確定的,這種純函數(shù)稱之為沒有副
作用。而允許使用變量的程序設(shè)計(jì)語言,由于函數(shù)內(nèi)部的變
量狀態(tài)不確定,同樣的輸入,可能得到不同的輸出,因此,
這種函數(shù)是有副作用的。由于Python允許使用變量,因此,
Python不是純函數(shù)式編程語言
函數(shù)式編程的一個(gè)特點(diǎn)就是,允許把函數(shù)本身作為參數(shù)傳入
另一個(gè)函數(shù),還允許返回一個(gè)函數(shù)!
函數(shù)作為返回值例子:
|defsum(*args):^^M
|definner_sum()iB
|foriinargs:^^[
■M||
Ireturn
|i.
|mysum=sum(2,4,6)|
|print(type(mysum))B
output
kclass'function'^
幽
67.簡(jiǎn)述閉包
如果在一個(gè)內(nèi)部函數(shù)里,對(duì)在外部作用域(但不是在全局作
用域)的變量進(jìn)行引用,那么內(nèi)部函數(shù)就被認(rèn)為是閉包
(closure)附上函數(shù)作用域圖片
閉包特點(diǎn)
1.必須有一個(gè)內(nèi)嵌函數(shù)
2.內(nèi)嵌函數(shù)必須引用外部函數(shù)中的變量
3.外部函數(shù)的返回值必須是內(nèi)嵌函數(shù)
68.簡(jiǎn)述裝飾器
裝飾器是一種特殊的閉包,就是在閉包的基礎(chǔ)上傳遞了一個(gè)
函數(shù),然后覆蓋原來函數(shù)的執(zhí)行入口,以后調(diào)用這個(gè)函數(shù)的
時(shí)候,就可以額外實(shí)現(xiàn)一些功能了
一個(gè)打印log的例子:
|import
|def
|definn6r_log(*args,
|print("CaU:{}".format(func.—name))|
HIE「!.」一,嘴
imer()
output
H56O17UOS28365
本質(zhì)上,decorator就是一個(gè)返回函數(shù)的高階函數(shù)
69.協(xié)程的優(yōu)點(diǎn)
子程序切換不是線程切換,而是由程序自身控制
沒有線程切換的開銷,和多線程比,線程數(shù)量越多,協(xié)程的
性能優(yōu)勢(shì)就越明顯
不需要多線程的鎖機(jī)制,因?yàn)橹挥幸粋€(gè)線程,也不存在同時(shí)
寫變量沖突,在協(xié)程中控制共享資源不加鎖
70.實(shí)現(xiàn)一個(gè)斐波那契數(shù)列
斐波那契數(shù)列:
又稱黃金分割數(shù)列,指的是這樣一個(gè)數(shù)列:1、1、2、3、5、
8、13、21、34、……在數(shù)學(xué)上,斐波納契數(shù)列以如下被以
遞歸的方法定義:F(l)=l,F(2)=l,F(n)=F(n-l)+F(n-2)(n>=2,
nGN*)
生成器法:
ifnotisinstance(n,int)or(abs(n)!=n):
while
a,b=
yield
|[iforiinfib(10)]|
output
In,1,2,3,5,8,13,21,34,55]|
遞歸法:
ifnotisinstance(n,int)or(abs(n)!=n):|
return
return
『fib(i)foriinrange(l,11)]|
output
1,1,2,3,5,8,13,21,34,55]
71.正則切分字符串
tri='hellowo「ld:kiobodazahtd]
,'
「csult二rc.spli1(r:|[sW
)rint(result)
output
『hello'Jworld','luobo'Jdazahui]
72.yield用法
yield是用來生成迭代器的語法,在函數(shù)中,如果包含了
yield,那么這個(gè)函數(shù)就是一個(gè)迭代器。當(dāng)代碼執(zhí)行至yield
時(shí),就會(huì)中斷代碼執(zhí)行,直到程序調(diào)用next()函數(shù)時(shí),才會(huì)
在上次yield的地方繼續(xù)執(zhí)行
^mntCstarnes^ield^
|while
|result二yield
|print(”result:\result
I「(”、MJ
print(next(g)j
print(next(g))|
output
Harttestyield|
可以看到,第一個(gè)調(diào)用next()函數(shù),程序只執(zhí)行到了"result
=yield5n這里,同時(shí)由于yield中斷了程序,所以result也
沒有被賦值,所以第二次執(zhí)行next()時(shí),result是None
73.冒泡排序
defpaixu(data,reverse=False):^^^^^^^^^B
ifnot
foriinrange(len(data)
forjinrange(len(data)-1-
「()「iin「;ingc("((Mla)-1
forjinrange(len(data)-1?i):|
^^^^dataH]^ata^^^^ata^^^ata[jj
print(paixu(listl,reverse=True))|
output
HWdldldlt煙I
74.快速排序
快排的思想:首先任意選取一個(gè)數(shù)據(jù)(通常選用數(shù)組的第一
個(gè)數(shù))作為關(guān)鍵數(shù)據(jù),然后將所有比它小的數(shù)都放到它前面,
所有比它大的數(shù)都放到它后面,這個(gè)過程稱為一趟快速排
序,之后再遞歸排序兩邊的數(shù)據(jù)
挑選基準(zhǔn)值:從數(shù)列中挑出一個(gè)元素,稱為“基準(zhǔn)"(pivot)
分割:重新排序數(shù)列,所有比基準(zhǔn)值小的元素?cái)[放在基準(zhǔn)前
面,所有比基準(zhǔn)值大的元素?cái)[在基準(zhǔn)后面(與基準(zhǔn)值相等的
數(shù)可以到任何一邊)
在這個(gè)分割結(jié)束之后,對(duì)基準(zhǔn)值的排序就已經(jīng)完成
遞歸排序子序列:遞歸地將小于基準(zhǔn)值元素的子序列和大于
基準(zhǔn)值元素的子序列排序
|listl=[8,5,1,3,2,10,11,4,12,20],
|def
|pivot二arr[high]
|forjinrange(Iow,
|arr[i+l],arr[high]-arr[high],arr[i+l]
|return
|defquicksort(arr
|pi二partition(arr,low,high)
|quickso「l(aiT.pi+1.high)
huicksort(listl,0,]en(listl)?l)|
print(listl)
output
|[1,2,3,4,5,8,10,11,12,201
75.requests簡(jiǎn)介
該庫是發(fā)起HTTP請(qǐng)求的強(qiáng)大類庫,調(diào)用簡(jiǎn)單,功能強(qiáng)大
importrequests)
url="http:〃www.luobodazahui.top”
response二requests.get(url)
response.encoding="ut18”
html二】esponse.text
binary_content=response.content
raw=requests.get(url,stream二True)
,二「cqucsls.gcl(u「Lheaders二header
cookies={"cookie“:”#yourcookie"}|
r=requests.get(url,cookies=cookies)
76.比較兩個(gè)json數(shù)據(jù)是否相等
dictl={"zhangfei11:12,Hguanyun:13,nliubein:1
dict2={"zhangfei”:12,“guanyu“:13,"liubei":18}
defcompare_dict(dictl,
issame=
forkin
issame.append(2)^^^^^^^^^^^^^M
issame
print(
ifsum_6xcept二=sum_actually:^^^^^^^^^B
print(nthistwodietare
print。thistwodietarenotsame!
returnFalse
|test二compare_dict(dictl,dict2)|
output
rthistwodietaresame!
77.讀取鍵盤輸入
[nput()函數(shù)■
Heffo「input():|
print("yourinputtextis:“,input_text)|
|forinput()|
output
lyourinputtextis:heHo|
78.enumerate
enumerateQ函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元
組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下
標(biāo),一般用在for循環(huán)當(dāng)中
|fori,enuinenumerate(dataiy^B
print(i,enu)|
output
pass是空語句,是為了保持程序結(jié)構(gòu)的完整性。pass不做任
何事情,一般用做占位語句
defforpass(n):
卜si〕ri、、(i)■■■
80.正則匹配郵箱
bremailemail
print(”%s是符合規(guī)定的郵件地址,匹配后結(jié)果是:%s“%(emailjet.group。))
output
.」「,一
81.統(tǒng)計(jì)字符串中大寫字母的數(shù)量
|str2,werrQWSDdiWuW||
|counter=
|foriin
|ifi.isupper():^^^^^M
Icoi!i)!cr-=
Drint(counter)
output
82.json序列化時(shí)保留中文
普通序列化:
|import
Hictl_new二json.dumps(dictl),
|print(dictlLnew)^^^^^^^^B
output
{"name":”\u841d\u535c","age":18}
保留中文
|import
|dictl_new二json.dumps(dictl,ensure_ascii=False)|
mnt(dictl_new)
output
{"name":"蘿卜","age":18}
83.簡(jiǎn)述繼承
一個(gè)類繼承自另一個(gè)類,也可以說是一個(gè)孩子類/派生類/子
類,繼承自父類/基類/超類,同時(shí)獲取所有的類成員(屬性
和方法)
繼承使我們可以重用代碼,并且還可以更方便地創(chuàng)建和維護(hù)
代碼
Python支持以下類型的繼承:
單繼承-一個(gè)子類類繼承自單個(gè)基類
多重繼承-一個(gè)子類繼承自多個(gè)基類
多級(jí)繼承-一個(gè)子類繼承自一個(gè)基類,而基類繼承自另一個(gè)
基類
分層繼承-多個(gè)子類繼承自同一個(gè)基類
混合繼承-兩種或兩種以上繼承類型的組合
84.什么是猴子補(bǔ)丁
猴子補(bǔ)丁是指在運(yùn)行時(shí)動(dòng)態(tài)修改類和模塊
猴子補(bǔ)丁主要有以下幾個(gè)用處:
在運(yùn)行時(shí)替換方法、屬性等
在不修改第三方代碼的情況下增加原來不支持的功能
在運(yùn)行時(shí)為內(nèi)存中的對(duì)象增加patch而不是在磁盤的源代
碼中增加
85.help()函數(shù)和dir()函數(shù)
help()函數(shù)返回幫助文檔和參數(shù)說明:
|help(dict)|
output
Helponclassdietinmodulebuiltins:|
classdict(object))
|dict()->newempty
|dicl(rmipping)-〉newdiclionai〉inili”i/cd「isnamiippingobjccl'、,
|(key,value)
|dicl(imblc)-〉newdicli()rKiryiniti;ili/cd心i「\
dict(**kwargs)?>newdictionaryinitializedwiththename二valuepairs|
|inthekeywordargumentlist.Forexample:dict(one=l,two=2)?
dir()函數(shù)返回對(duì)象中的所有成員(任何類型)
dir(dict)
output
contains.
.delattr_
delitem.
86.解釋Python中的//,%而米米運(yùn)算符
〃運(yùn)算符執(zhí)行地板除法,返回結(jié)果的整數(shù)部分(向下取整)
%是取模符號(hào),返回除法后的余數(shù)
**符號(hào)表不取幕.a**b返回a的b次方
print(5//3)l
print(5/3)B
pHnt(5**31
output
1.6666666666666667
125
87.主動(dòng)拋出異常
使用raise
peftest_raise(n):^^^^B
ifnolisinstance(n,int):|
raiseException('notainttype)
pMnt('good')|
test_raise(8.9)
output
ExceptionTraceback(mostrecentcalllast)
<ipython-input-262-b45324f5484e>in<module>
4
>6tcst_raise(8.9)^^^g
<ipython-input-262-b45324f5484e>intest_raise(n)
1deftest_raise(n):
2ifnotisinstance(n,int):|
—>3raiseException('notainttype'
〔Exceplion:nolainilype^M
88.tuple和list轉(zhuǎn)換
tuple1=(1,2,3,4)
listl=list(tuplel)
print(listl)
tuple2=tuple(listl)
)rint(tuple2)
output
1,2,3,4](1,2,3,4)|
89.簡(jiǎn)述斷言
Python的斷言就是檢測(cè)一個(gè)條件,如果條件為真,它什么都
不做;反之它觸發(fā)一個(gè)帶可選錯(cuò)誤信息的AssertionError
|deftestassert(n):^^^^^M
output
AssertionErrorTraceback(mostrecentcalllast)|
<ipy[h()n-inpu〔-268-a9dfd6c79c73>in〈module)
2assertn二二2,"nisnot2
——>4testassert(l)
vipython-input-268-a9dfd6c79e73>intestassert(n)|
1deftestassert(n):
——>2assertn二二2,"nisnot2"
3print('nis2')|
4testassert(1)
AssertionEnor:nisnot2
90.什么是異步非阻塞
同步異步指的是調(diào)用者與被調(diào)用者之間的關(guān)系
所謂同步,就是在發(fā)出一個(gè)功能調(diào)用時(shí),在沒有得到結(jié)果之
前,該調(diào)用就不會(huì)返回,一旦調(diào)用返回,就得到了返回值
異步的概念和同步相對(duì),調(diào)用在發(fā)出之后,這個(gè)調(diào)用就直接返
回了,所以沒有返回結(jié)果。當(dāng)該異步功能完成后,被調(diào)用者可
以通過狀態(tài)、通知或回調(diào)來通知調(diào)用者
阻塞非阻塞是線程或進(jìn)程之間的關(guān)系
阻塞調(diào)用是指調(diào)用結(jié)果返回之前,當(dāng)前線程會(huì)被掛起(如遇
到io操作)。調(diào)用線程只有在得到結(jié)果之后才會(huì)返回。函數(shù)
只有在得到結(jié)果之后才會(huì)將阻塞的線程激活
非阻塞和阻塞的概念相對(duì)應(yīng),非阻塞調(diào)用指在不能立刻得到
結(jié)果之前也會(huì)立刻返回,同時(shí)該函數(shù)不會(huì)阻塞當(dāng)前線程
91.什么是負(fù)索引
Python中的序列是有索引的,它由正數(shù)和負(fù)數(shù)組成。正的數(shù)
字使用U作為第一個(gè)索引,T作為第二個(gè)索引,以此類推
負(fù)數(shù)的索引從開始,表示序列中的最后一個(gè)索引,'-2作
為倒數(shù)第二個(gè)索引,依次類推
92.退出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)非開挖設(shè)備市場(chǎng)運(yùn)行狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)銣礦市場(chǎng)運(yùn)營(yíng)狀況及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)針織類服裝行業(yè)運(yùn)行動(dòng)態(tài)及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)金屬波紋補(bǔ)償器市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)觸摸屏機(jī)柜行業(yè)市場(chǎng)競(jìng)爭(zhēng)狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)血漿代用品行業(yè)發(fā)展現(xiàn)狀規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)蟻醛行業(yè)運(yùn)營(yíng)現(xiàn)狀與發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)艾灸行業(yè)運(yùn)營(yíng)狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025-2030年中國(guó)硅碳棒行業(yè)運(yùn)行動(dòng)態(tài)與營(yíng)銷策略研究報(bào)告
- 2025-2030年中國(guó)石墨礦市場(chǎng)運(yùn)行狀況及發(fā)展趨勢(shì)分析報(bào)告
- 二年級(jí)閱讀導(dǎo)航(下)
- 鹽霧試驗(yàn)過程記錄表
- 小學(xué)校務(wù)監(jiān)督委員會(huì)實(shí)施方案
- Q∕SY 13006-2016 招標(biāo)項(xiàng)目標(biāo)段(包)劃分指南
- 《大學(xué)英語教學(xué)大綱詞匯表》(1~4級(jí),5~6級(jí))
- DB11-T1630-2019城市綜合管廊工程施工及質(zhì)量驗(yàn)收規(guī)范
- 醫(yī)院消毒供應(yīng)中心清洗、消毒、滅菌質(zhì)控評(píng)分表
- 27供應(yīng)室清洗消毒及滅菌效果監(jiān)測(cè)制度
- 金色大氣教師節(jié)頒獎(jiǎng)典禮頒獎(jiǎng)盛典PPT模板
- OECD Good laboratory practice (GLP)中英文對(duì)照版
- 生化工程,第七章反應(yīng)器放大與設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論