最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年12月05日 11:21:48   投稿:laozhang  
本篇文章我們?yōu)榇蠹艺砹嗽赑ython程序員面試中被問的最多的10道題,我們還給出了最簡便的解決辦法,一起學(xué)習(xí)下。

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

Python是個(gè)非常受歡迎的編程語言,隨著近些年機(jī)器學(xué)習(xí)、云計(jì)算等技術(shù)的發(fā)展,Python的職位需求越來越高。下面我收集了10個(gè)Python面試官經(jīng)常問的問題,供大家參考學(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__方法指向了類對象,只用給他賦值類型A,然后調(diào)用方法show,但是用完了記得修改回來。

方法對象

問題:為了讓下面這段代碼運(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)

答案:為了能讓對象實(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è)對象,也就是創(chuàng)建對象之前,這個(gè)可以用于設(shè)計(jì)模式的單例、工廠模式。__init__是創(chuàng)建對象是調(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 都沒有定義,添加代碼,是沒有定義的方法都調(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)沒有定義的方法調(diào)用時(shí),才是調(diào)用他。當(dāng)fn1方法傳入?yún)?shù)時(shí),我們可以給mydefault方法增加一個(gè)*args不定參數(shù)來兼容。

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']

閉包
寫一個(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è)不可變對象,每次迭代,都會生成新的str對象來存儲新的字符串,num越大,創(chuàng)建的str對象越多,內(nèi)存消耗越大。

相關(guān)文章

  • 總結(jié)分析Python的5個(gè)硬核函數(shù)

    總結(jié)分析Python的5個(gè)硬核函數(shù)

    今天看到一篇很好的 Python 博文,結(jié)合自己的經(jīng)驗(yàn)總結(jié),分享給大家一篇關(guān)于eval, exec, compile, locals, globals這些函數(shù)的文章
    2021-11-11
  • 利用python畫出AUC曲線的實(shí)例

    利用python畫出AUC曲線的實(shí)例

    今天小編就為大家分享一篇利用python畫出AUC曲線的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Django組件content-type使用方法詳解

    Django組件content-type使用方法詳解

    這篇文章主要介紹了Django組件content-type使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python學(xué)習(xí)筆記:字典的使用示例詳解

    python學(xué)習(xí)筆記:字典的使用示例詳解

    python字典的使用: python字典有很多好用的地方。字典每個(gè)元素都有鍵和值。如同現(xiàn)代漢語字典中的拼音和對應(yīng)的文字。字典中的鍵是唯一的,而值不一定唯一。你看,和現(xiàn)代漢語字典多么的相似。
    2014-06-06
  • python使用docx模塊讀寫docx文件的方法與docx模塊常用方法詳解

    python使用docx模塊讀寫docx文件的方法與docx模塊常用方法詳解

    這篇文章主要介紹了python使用docx模塊讀寫docx文件的方法與docx模塊常用方法詳解,需要的朋友可以參考下
    2020-02-02
  • Python爬蟲運(yùn)用正則表達(dá)式的方法和優(yōu)缺點(diǎn)

    Python爬蟲運(yùn)用正則表達(dá)式的方法和優(yōu)缺點(diǎn)

    這篇文章主要給大家介紹了關(guān)于Python爬蟲運(yùn)用正則表達(dá)式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 詳細(xì)解析Python當(dāng)中的數(shù)據(jù)類型和變量

    詳細(xì)解析Python當(dāng)中的數(shù)據(jù)類型和變量

    這篇文章主要介紹了Python當(dāng)中的數(shù)據(jù)類型和變量,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-04-04
  • python使用protobufde的過程解析

    python使用protobufde的過程解析

    Google開源的一個(gè)序列化框架,類似于xml , json。最大的特點(diǎn)是基于 二進(jìn)制,比傳統(tǒng)的xml表示同樣的內(nèi)容要短小很多。亦可定義一些可選字段,用于服務(wù)端與客戶端通信
    2021-08-08
  • Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn)

    Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn)

    這篇文章主要介紹了Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python3.x版本中新的字符串格式化方法

    Python3.x版本中新的字符串格式化方法

    這篇文章主要介紹了Python3.x版本中新的字符串格式化方法,本文對比給出了Python2.x和Python3.x中字符串格式化方法實(shí)例代碼,需要的朋友可以參考下
    2015-04-04

最新評論

高清| 乌鲁木齐市| 青神县| 紫云| 宣恩县| 连城县| 辽宁省| 胶州市| 平原县| 达日县| 棋牌| 容城县| 朝阳县| 朝阳区| 盘山县| 安义县| 顺义区| 驻马店市| 麻栗坡县| 常州市| 洪江市| 旌德县| 两当县| 铜川市| 饶平县| 东兰县| 潞城市| 德安县| 抚州市| 酉阳| 温宿县| 故城县| 于都县| 密山市| 山丹县| 镇平县| 宣威市| 宜春市| 克什克腾旗| 武功县| 淳安县|