欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

在Python程序員面試中被問的最多的10道題

系統 1658 0

我們在為大家整Python程序員面試試題中,發現了一些被面試官問到的最多的一些問題,以下就是本篇內容:

Python是個非常受歡迎的編程語言,隨著近些年機器學習、云計算等技術的發展,Python的職位需求越來越高。下面我收集了10個Python面試官經常問的問題,供大家參考學習。

類繼承

有如下的一段代碼:

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

          

如何調用類A的show方法了。
方法如下:

            
obj.__class__ = A
obj.show() 
          

__class__方法指向了類對象,只用給他賦值類型A,然后調用方法show,但是用完了記得修改回來。

方法對象

問題:為了讓下面這段代碼運行,需要增加哪些代碼?

            
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 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__方法,可以決定返回那個對象,也就是創建對象之前,這個可以用于設計模式的單例、工廠模式。__init__是創建對象是調用的。

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不是個全局變量,所以每個函數都得到了自己的num拷貝,如果你想修改num,則必須用global關鍵字聲明。比如下面這樣

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

          

交換兩個變量的值
一行代碼交換兩個變量值

            
a=8
b=9
          

答案

            
(a,b) = (b,a)
          

默認方法

如下的代碼

            
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 都沒有定義,添加代碼,是沒有定義的方法都調用mydefault函數,上面的代碼應該輸出

            
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__只有當沒有定義的方法調用時,才是調用他。當fn1方法傳入參數時,我們可以給mydefault方法增加一個*args不定參數來兼容。

            
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)
          

包管理

一個包里有三個模塊,mod1.py, mod2.py, mod3.py,但使用from demopack import *導入模塊時,如何保證只有mod1、mod3被導入了。

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

            
__all__ = ['mod1','mod3']
          

閉包
寫一個函數,接收整數參數n,返回一個函數,函數的功能是把函數的參數和n相乘并把結果返回。

答案 :

            
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是個不可變對象,每次迭代,都會生成新的str對象來存儲新的字符串,num越大,創建的str對象越多,內存消耗越大。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99热热99| 996热在线视频 | 日韩综合区 | 久草新视频 | 97视频久久久 | 国产在线精品成人一区二区三区 | 欧美成人性生活 | 欧美一区二区三 | 精品一区二区视频 | 波多野结衣亚洲一区 | 亚洲欧洲高清有无 | 色综合久久天天综合观看 | 亚洲欧美视频在线播放 | 日韩欧美h| 91色在线| 麻豆国产一区二区三区四区 | 欧美色欧美亚洲另类二区精品 | 国产专区欧美 | 国产高清一区 | 视频一区二区三区四区五区 | 国产激情一级毛片久久久 | 三级免费网址 | 欧美日本免费一区二区三区 | 国产美女啪 | 亚洲高清中文字幕综合网 | 日本91| 北岛玲亚洲一区在线观看 | 免费观看欧美一级片 | 精品女同一区二区三区免费播放 | 免费播放欧美一级特黄 | 视频一区二区不卡 | 日韩久久综合 | 91国在线产| 亚洲视频 在线观看 | 亚洲视频在线播放 | 免费激情视频在线观看 | 999精品视频在线观看 | 午夜激情视频在线 | 精品久久久久久无码中文字幕 | 免费观看欧美一级片 | 久久综合九色综合欧美狠狠 |