<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
答:從三個方面來說,一物件的參照計數機制,二垃圾回收機制,三記憶體池機制
⒈物件的參照計數機制
Python 內部使用參照計數,來保持追蹤記憶體中的物件,所有物件都有參照計數。參照計數增加的情況:
❶一個物件分配一個新名稱
❷將其放入一個容器中(如列表、元組或字典) 參照計數減少的情況:
❶使用 del 語句對物件別名顯示的銷燬
❷參照超出作用域或被重新賦值
sys.getrefcount( )
函數可以獲得物件的當前參照計數
多數情況下,參照計數比你猜測得要大得多。對於不可變資料(如數位和字串),直譯器會在程式的不同部分共用記憶體,以便節約記憶體。
⒉垃圾回收
❶當一個物件的參照計數歸零時,它將被垃圾收集機制處理掉。
❷當兩個物件 a 和 b 相互參照時,del 語句可以減少 a 和 b 的參照計數,並銷燬用於參照底層物件的名稱。然而由於每個物件都包含一個對其他物件的應用,
因此參照計數不會歸零,物件也不會銷燬。(從而導致記憶體洩露)。為解決這一問題,直譯器會定期執行一個迴圈檢測器,搜尋不可存取物件的迴圈並刪除它們。
⒊記憶體池機制
Python 提供了對記憶體的垃圾收集機制,但是它將不用的記憶體放到記憶體池而不是返回給作業系統。
❶Pymalloc 機制。為了加速 Python 的執行效率,Python 引入了一個記憶體池機制,用於管理對小塊記憶體的申請和釋放。
❷Python 中所有小於 256 個位元組的物件都使用 pymalloc 實現的分配器,而大的物件則使用系統的 malloc。
❸對於 Python 物件,如整數,浮點數和 List,都有其獨立的私有記憶體池,物件間不共用他們的記憶體池。也就是說如果你分配又釋放了大量的整數,用於快取這些整數的記憶體就不能再分配給浮點數。
答:lambda 表示式,通常是在需要一個函數,但是又不想費神去命名一個函數的場合下使用, 也就是指匿名函數
lambda 函數:首要用途是指點短小的回撥函數lambda [arguments]:expression
>>> a=lambdax,y:x+y >>> a(3,11)
答:直接使用 tuple 和 list 函數就行了,type()可以判斷物件的型別
答
使用 set 函數,set(list)
使用字典函數,
>>>a=[1,2,4,2,4,5,6,5,7,8,9,0] >>> b={} >>>b=b.fromkeys(a) >>>c=list(b.keys()) >>> c
a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3] a.sort() last=a[-1] for i inrange(len(a)-2,-1,-1): if last==a: del a else:last=a print(a)
答:賦值(=),就是建立了物件的一個新的參照,修改其中任意一個變數都會影響到另一個。淺拷貝:建立一個新的物件,但它包含的是對原始物件中包含項的參照(如果用參照的方式修改其中一個物件,另外一個也會修改改變){1,完全切片方法;2,工廠函數,如 list();
3,copy 模組的 copy()函數}
深拷貝:建立一個新的物件,並且遞迴的複製它所包含的物件(修改其中一個,另外一個不會改變){copy 模組的 deep.deepcopy()函數}
答:try…except…except…[else…][finally…]
執行 try 下的語句,如果引發異常,則執行過程會跳到 except 語句。對每個 except 分支順序嘗試執行,如果引發的異常與 except 中的異常組匹配,執行相應的語句。
如果所有的 except 都不匹配,則異常會傳遞到下一個呼叫本程式碼的最高層 try 程式碼中。
try 下的語句正常執行,則執行 else 塊程式碼。如果發生異常,就不會執行如果存在 finally 語句,最後總是會執行。
答:pass 語句不會執行任何操作,一般作為預留位置或者建立佔位程式,whileFalse:pass
答:列出一組資料,經常用在 for in range()
迴圈中
答:可以使用 re 模組中的 sub()函數或者 subn()函數來進行查詢和替換,
格式:sub(replacement, string[,count=0])
(replacement 是被替換成的文字,string 是需要被替換的文字,count 是一個可選引數,指最大被替換的數量)
>>> import re >>>p=re.compile(‘blue|white|red') >>>print(p.sub(‘colour','blue socks and red shoes')) colour socks and colourshoes >>>print(p.sub(‘colour','blue socks and red shoes',count=1)) colour socks and redshoes
subn()方法執行的效果跟 sub()一樣,不過它會返回一個二維陣列,包括替換後的新的字串和總共替換的數量
答:re 模組中 match(pattern,string[,flags])
,檢查 string 的開頭是否與 pattern 匹配。
re 模組中re.search(pattern,string[,flags])
,在 string 搜尋 pattern 的第一個匹配值。
>>>print(re.match(‘super', ‘superstition').span()) (0, 5) >>>print(re.match(‘super', ‘insuperable')) None >>>print(re.search(‘super', ‘superstition').span()) (0, 5) >>>print(re.search(‘super', ‘insuperable').span()) (2, 7)
答:術語叫貪婪匹配( <.*> )和非貪婪匹配(<.*?> )
例如:
test <.*> : test <.*?> :
答:random 模組
隨機整數:random.randint(a,b)
:返回隨機整數 x,a<=x<=b
random.randrange(start,stop,[,step])
:返回一個範圍在(start,stop,step)之間的隨機整數,不包括結束值。
隨機實數:random.random( )
:返回 0 到 1 之間的浮點數
random.uniform(a,b)
:返回指定範圍內的浮點數。
答:PyChecker 是一個 python 程式碼的靜態分析工具,它可以幫助查詢 python 程式碼的 bug, 會
對程式碼的複雜度和格式提出警告
Pylint 是另外一個工具可以進行 codingstandard 檢查
答:解決方法是在 function 的開始插入一個 global 宣告: def f()
global x
答:單引號和雙引號是等效的,如果要換行,需要符號(),三引號則可以直接換行,並且可以包含註釋
如果要表示 Let’s go 這個字串單引號:s4 = ‘Let’s go’
雙引號:s5 = “Let’s go”
s6 = ‘I realy like「python」!'
這就是單引號和雙引號都可以表示字串的原因了
到此這篇關於Python面經之16個高頻面試問題總結的文章就介紹到這了,更多相關Python面試問題內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45