python面試必備1 等待複習

2021-08-21 22:06:35 字數 2552 閱讀 1249

1. 如何修改如下的**,使得下面的**呼叫類a的show方法?

class a(object):

def show(self):

print 'base show'

class b(a):

def show(self):

print 'derived show'

obj = b()

obj.show()

這裡考察的是類繼承,只要通過__class__方法指定類物件就可以了。

補充**如下:

obj.__class__ = a

obj.show()

2. 請問如何修改如下**,使得**能夠執行?

class a(object):

def __init__(self, a, b):

self.__a = a

self.__b = b

def myprint(self):

print 'a=', self.__a, 'b=', self.__b

a1 = a(10, 20)

a1.myprint()

a1(80)

此題考察的是方法物件,為了能讓物件例項能夠呼叫,需要實現__call__方法,補充**如下:

class a(object):

def __init__(self, a, b):

self.__a = a

self.__b = b

def mypprint(self):

print 'a=', self.__a, 'b=', self.__b

def __call__(self, num):

print 'call', num + self.__a

3. 下面**的輸出是什麼?

class b(object):

def fn(self):

print 'b fn'

def __init__(self):

print 'b init'

class a(object):

def fn(self):

print 'a fn'

def __new__(cls, a):

print 'new', a

if a > 10:

return super(a, cls).__new__(cls)

return b()

def __init__(self, a):

print 'init', a

a1 = a(5)

a1.fn()

a2 = a(20)

a2.fn()

new 5

b init

b fn

new 20

init 20

a fn

此題考察的是new和init的用法,使用__new__方法,可以決定返回哪個物件,也即是建立物件之前呼叫,這個常見於設計模式的單例、工廠模式。__init__是建立物件時呼叫的

4. 下面這段**的輸出是什麼?

ls = [1, 2, 3, 4]

list1 = [i for i in ls if i > 2]

print list1

list2 = [i*2 for i in ls if i > 2]

print list2

dic1 =

print dic1

dic2 =

print dic2

set1 =

print set1

輸出如下:

[3, 4]

[6, 8]

set(['h', 'r', 'd'])

問題5:下面這段**輸出什麼?

答:此題考察全域性變數和區域性變數。num 不是個全域性變數,所以每個函式都得到了自己的 num 拷貝,如果你想修改 num ,則必須用 global 關鍵字宣告。比如下面這樣

問題6:如何使用一行**交換兩個變數值?

答:問題7:如何新增**,使得沒有定義的方法都呼叫mydefault方法?

答:此題的考的是python的預設方法, 只有當沒有定義的方法呼叫時,才會呼叫方法 __getattr__。當 fn1 方法傳入引數時,我們可以給 mydefault 方法增加乙個 *args 不定引數來相容。

問題8:乙個包裡有三個模組,mod1.py , mod2.py , mod3.py ,但使用 from demopack import * 匯入模組時,如何保證只有 mod1 、 mod3 被匯入了。

答:在包中增加 __init__.py 檔案,並在檔案中增加:

問題9:寫乙個函式,接收整數引數 n ,返回乙個函式,函式返回n和引數的積。

答:問題10:請問下面的**有什麼隱患?

答:由於變數str是個不可變物件,每次迭代,python都會生成新的str物件來儲存新的字串,num越大,建立的str物件越多,記憶體消耗越大。

Processing 日常3 等待動畫1

還記得守望先鋒加入遊戲的時候,出現的等待畫面嗎?今天我們用processing來模擬一下!先來看一下最後的效果 首先分析一下這個效果是由哪些元素構成。1.有乙個基本圖形,複製了好多分。2.每乙個圖形按照一種特定的運動規律在做動畫。3.動畫同時伴隨著大小 透明度在變化。ok 我們先來解決第乙個問題。可...

Dojo 1 x 筆記3 等待DOM載入完成

有的web頁面總是得等dom載入完成才能繼續執行功能,例如,待頁面dom載入完成後,才能在div上進行渲染圖形。dojo提供了這個功能的模組,叫domready,但是由於它很特殊,就在結尾加了個嘆號 這個例子很簡單,就直接在script裡寫js 了 html部分 h1 id greeting hel...

python基礎複習突擊面試(1)

1 map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。例 def f x return x x print map f,1,2,3,4,5,6,7,8,9 輸出結果 1,4,9,10,...