概述
Python是個非常受歡迎的編程語言,隨著近些年機器學習、云計算等技術的發展,Python的職位需求越來越高。下面我收集了10個Python面試官經常問的問題,供大家參考學習。
類繼承
有如下的一段代碼:
如何調用類A的show方法了。 方法如下:
obj.__class__ = A
obj.show()
__class__方法指向了類對象,只用給他賦值類型A,然后調用方法show,但是用完了記得修改回來。
方法對象
問題:為了讓下面這段代碼運行,需要增加哪些代碼?
答案:為了能讓對象實例能被直接調用,需要實現__call__方法
new和init
下面這段代碼輸入什么?
答案:
NEW 5
B INIT
B fn
NEW 20
INIT 20
A fn
使用__new__方法,可以決定返回那個對象,也就是創建對象之前,這個可以用于設計模式的單例、工廠模式。__init__是創建對象是調用的。
Python list和dict生成
下面這段代碼輸出什么?
答案:
全局和局部變量
下面這段代碼輸出什么?
答案:
9
9
num不是個全局變量,所以每個函數都得到了自己的num拷貝,如果你想修改num,則必須用global關鍵字聲明。比如下面這樣
交換兩個變量的值
一行代碼交換兩個變量值
a=8b=9
答案:
(a,b) = (b,a)
默認方法
如下的代碼
方法 fn1/fn2/fn3 都沒有定義,添加代碼,是沒有定義的方法都調用mydefault函數,上面的代碼應該輸出
defaultdefaultdefault
答案:
方法__getattr__只有當沒有定義的方法調用時,才是調用他。當fn1方法傳入參數時,我們可以給mydefault方法增加一個*args不定參數來兼容。
包管理
一個包里有三個模塊,mod1.py, mod2.py, mod3.py,但使用from demopack import *導入模塊時,如何保證只有mod1、mod3被導入了。
答案:增加__init__.py文件,并在文件中增加:
__all__ = ['mod1','mod3']
閉包
寫一個函數,接收整數參數n,返回一個函數,函數的功能是把函數的參數和n相乘并把結果返回。
答案:
性能
解析下面的代碼慢在哪
答案:python的str是個不可變對象,每次迭代,都會生成新的str對象來存儲新的字符串,num越大,創建的str對象越多,內存消耗越大。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
