亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

在Python程序員面試中被問(wèn)的最多的10道題

系統(tǒng) 1585 0

我們?cè)跒榇蠹艺鸓ython程序員面試試題中,發(fā)現(xiàn)了一些被面試官問(wèn)到的最多的一些問(wèn)題,以下就是本篇內(nèi)容:

Python是個(gè)非常受歡迎的編程語(yǔ)言,隨著近些年機(jī)器學(xué)習(xí)、云計(jì)算等技術(shù)的發(fā)展,Python的職位需求越來(lái)越高。下面我收集了10個(gè)Python面試官經(jīng)常問(wèn)的問(wèn)題,供大家參考學(xué)習(xí)。

類繼承

有如下的一段代碼:

            
class A(object):
def show(self):
print 'base show'
class B(A):
def show(self):
print 'derived show' 
obj = B()
obj.show()

          

如何調(diào)用類A的show方法了。
方法如下:

            
obj.__class__ = A
obj.show() 
          

__class__方法指向了類對(duì)象,只用給他賦值類型A,然后調(diào)用方法show,但是用完了記得修改回來(lái)。

方法對(duì)象

問(wèn)題:為了讓下面這段代碼運(yùn)行,需要增加哪些代碼?

            
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)
          

答案 :為了能讓對(duì)象實(shí)例能被直接調(diào)用,需要實(shí)現(xiàn)__call__方法

            
class A(object):
def __init__(self, a, b):
self.__a = a
self.__b = b
def myprint(self):
print 'a=', self.__a, 'b=', self.__b
def __call__(self, num):
print 'call:', num + self.__a
          

new和init

下面這段代碼輸入什么?

            
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__方法,可以決定返回那個(gè)對(duì)象,也就是創(chuàng)建對(duì)象之前,這個(gè)可以用于設(shè)計(jì)模式的單例、工廠模式。__init__是創(chuàng)建對(duì)象是調(diào)用的。

Python list和dict生成

下面這段代碼輸出什么?

            
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 = {x: x**2 for x in (2, 4, 6)}
print dic1
dic2 = {x: 'item' + str(x**2) for x in (2, 4, 6)}
print dic2
set1 = {x for x in 'hello world' if x not in 'low level'}
print set1

          

答案 :

            
[3, 4] 
[6, 8]
{2: 4, 4: 16, 6: 36}
{2: 'item4', 4: 'item16', 6: 'item36'}
set(['h', 'r', 'd'])

          

全局和局部變量

下面這段代碼輸出什么?

            
num = 9
def f1():
num = 20
def f2():
print num 
f2()
f1()
f2()

          

答案 :

            
9
9
          

num不是個(gè)全局變量,所以每個(gè)函數(shù)都得到了自己的num拷貝,如果你想修改num,則必須用global關(guān)鍵字聲明。比如下面這樣

            
num = 9
def f1():
global num
num = 20 
def f2():
print num 
f2()
f1()
f2() 
# prints:
# 9
# 20

          

交換兩個(gè)變量的值
一行代碼交換兩個(gè)變量值

            
a=8
b=9
          

答案

            
(a,b) = (b,a)
          

默認(rèn)方法

如下的代碼

            
class A(object):
def __init__(self,a,b):
self.a1 = a
self.b1 = b
print 'init'
def mydefault(self):
print 'default'
a1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()
          

方法 fn1/fn2/fn3 都沒(méi)有定義,添加代碼,是沒(méi)有定義的方法都調(diào)用mydefault函數(shù),上面的代碼應(yīng)該輸出

            
default
default
default
          

答案

            
class A(object):
def __init__(self,a,b):
self.a1 = a
self.b1 = b
print 'init'
def mydefault(self):
print 'default'
def __getattr__(self,name):
return self.mydefault
a1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()

          

方法__getattr__只有當(dāng)沒(méi)有定義的方法調(diào)用時(shí),才是調(diào)用他。當(dāng)fn1方法傳入?yún)?shù)時(shí),我們可以給mydefault方法增加一個(gè)*args不定參數(shù)來(lái)兼容。

            
class A(object):
def __init__(self,a,b):
self.a1 = a
self.b1 = b
print 'init'
def mydefault(self,*args):
print 'default:' + str(args[0])
def __getattr__(self,name):
print "other fn:",name
return self.mydefault
a1 = A(10,20)
a1.fn1(33)
a1.fn2('hello')
a1.fn3(10)
          

包管理

一個(gè)包里有三個(gè)模塊,mod1.py, mod2.py, mod3.py,但使用from demopack import *導(dǎo)入模塊時(shí),如何保證只有mod1、mod3被導(dǎo)入了。

答案 :增加__init__.py文件,并在文件中增加:

            
__all__ = ['mod1','mod3']
          

閉包
寫(xiě)一個(gè)函數(shù),接收整數(shù)參數(shù)n,返回一個(gè)函數(shù),函數(shù)的功能是把函數(shù)的參數(shù)和n相乘并把結(jié)果返回。

答案 :

            
def mulby(num):
def gn(val):
return num * val
return gn
zw = mulby(7)
print(zw(9));
          

性能

解析下面的代碼慢在哪

            
def strtest1(num):
str='first'
for i in range(num):
str+="X"
return str
          

答案 :python的str是個(gè)不可變對(duì)象,每次迭代,都會(huì)生成新的str對(duì)象來(lái)存儲(chǔ)新的字符串,num越大,創(chuàng)建的str對(duì)象越多,內(nèi)存消耗越大。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日本一级网站 | 欧美成人精品福利在线视频 | 四虎精品视频 | 好吊妞视频998www | 欧美精品啪啪 | 久久成人毛片 | www.日韩视频| 久久综合久久久久 | 日本精品久久久久中文字幕 1 | 99精品国产一区二区青青牛奶 | 亚洲午夜国产精品无卡 | 一级一毛片a级毛片欧美 | 国产成人理在线观看视频 | 欧美亚洲国产成人综合在线 | 亚洲日韩欧洲无码av夜夜摸 | 日韩精品中文字幕一区二区三区 | 免费精品久久久视频 | 一级午夜 | 欧美高清一区 | 久久久久久久久网站 | 欧美成人一级 | 免费一级欧美大片在线观看 | 精品亚洲性xxx久久久 | www.欧美| 久久久久久国产精品免费免费 | 国产在线19禁免费观看 | 久久综合九九亚洲一区 | 天天想天天干 | 国产在线观看精品香蕉v区 国产在线观看美女福利精 国产在线观看午夜不卡 | 四虎最新网站 | 一级aaa级毛片午夜在线播放 | 日本高清免费不卡视频 | 粗大猛烈进出呻吟声的视频 | 快射影院 | 天天爱夜夜做 | 国产午夜亚洲精品不卡福利 | 国产成人理在线观看视频 | 欧美一二三区 | 欧美一级免费大片 | 亚洲成aⅴ人片在线观 | 国产免费看 |