欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

我們?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']

閉包
寫一個(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)存消耗越大。

相關(guān)文章

  • Python列表元素常見(jiàn)操作簡(jiǎn)單示例

    Python列表元素常見(jiàn)操作簡(jiǎn)單示例

    這篇文章主要介紹了Python列表元素常見(jiàn)操作,結(jié)合簡(jiǎn)單示例形式分析了Python針對(duì)列表元素的打印、添加、刪除、修改、排序等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • 教你如何把Python CSV 合并到多個(gè)sheet工作表

    教你如何把Python CSV 合并到多個(gè)sheet工作表

    今天我們要實(shí)現(xiàn)將多個(gè)CSV文件,合并到一個(gè)Excel文件中的,多個(gè)sheet工作表,網(wǎng)上大多方法都是將csv直接合并在一起,也不分別創(chuàng)建sheet表。接下來(lái)通過(guò)本文給大家詳細(xì)介紹下,需要的朋友參考下吧
    2021-11-11
  • 利用Python自制一個(gè)批量圖片水印添加器

    利用Python自制一個(gè)批量圖片水印添加器

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言自制一個(gè)批量圖片水印添加器,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以了解一下
    2022-10-10
  • Python如何實(shí)現(xiàn)大型數(shù)組運(yùn)算(使用NumPy)

    Python如何實(shí)現(xiàn)大型數(shù)組運(yùn)算(使用NumPy)

    這篇文章主要介紹了Python如何實(shí)現(xiàn)大型數(shù)組運(yùn)算,文中講解非常細(xì)致,幫助大家更好的了解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python內(nèi)置函數(shù)memoryview()的實(shí)現(xiàn)示例

    Python內(nèi)置函數(shù)memoryview()的實(shí)現(xiàn)示例

    本文主要介紹了Python內(nèi)置函數(shù)memoryview()的實(shí)現(xiàn)示例,它允許你在不復(fù)制其內(nèi)容的情況下操作同一個(gè)數(shù)組的不同切片,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • python列表中刪除多條字典信息的三種方法

    python列表中刪除多條字典信息的三種方法

    本文主要介紹了python列表中刪除多條字典信息的三種方法,主要包括列表推導(dǎo)式,filter()函數(shù),del?關(guān)鍵字這三種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • ?Java?SE?面向?qū)ο缶幊痰?個(gè)常用接口

    ?Java?SE?面向?qū)ο缶幊痰?個(gè)常用接口

    這篇文章主要f?Java?SE?面向?qū)ο缶幊痰?個(gè)常用接口,Comparable、Comparator?比較器、Cloneable,下面文章詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-01-01
  • python淺拷貝與深拷貝使用方法詳解

    python淺拷貝與深拷貝使用方法詳解

    淺拷貝,指的是重新分配一塊內(nèi)存,創(chuàng)建一個(gè)新的對(duì)象,但里面的元素是原對(duì)象中各個(gè)子對(duì)象的引用。深拷貝,是指重新分配一塊內(nèi)存,創(chuàng)建一個(gè)新的對(duì)象,并且將原對(duì)象中的元素,以遞歸的方式,通過(guò)創(chuàng)建新的子對(duì)象拷貝到新對(duì)象中。因此,新對(duì)象和原對(duì)象沒(méi)有任何關(guān)聯(lián)
    2022-11-11
  • Pytorch的torch.nn.embedding()如何實(shí)現(xiàn)詞嵌入層

    Pytorch的torch.nn.embedding()如何實(shí)現(xiàn)詞嵌入層

    這篇文章主要介紹了Pytorch的torch.nn.embedding()如何實(shí)現(xiàn)詞嵌入層問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python實(shí)現(xiàn)多屬性排序的方法

    Python實(shí)現(xiàn)多屬性排序的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)多屬性排序的方法,非常不錯(cuò),具有一定的參考價(jià)借鑒價(jià)值,需要的朋友可以參考下
    2018-12-12

最新評(píng)論