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

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

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

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

Python是個非常受歡迎的編程語言,隨著近些年機器學習、云計算等技術的發(fā)展,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__方法,可以決定返回那個對象,也就是創(chuàng)建對象之前,這個可以用于設計模式的單例、工廠模式。__init__是創(chuàng)建對象是調用的。

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越大,創(chuàng)建的str對象越多,內存消耗越大。

相關文章

  • Python列表元素常見操作簡單示例

    Python列表元素常見操作簡單示例

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

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

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

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

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

    Python如何實現大型數組運算(使用NumPy)

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

    Python內置函數memoryview()的實現示例

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

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

    本文主要介紹了python列表中刪除多條字典信息的三種方法,主要包括列表推導式,filter()函數,del?關鍵字這三種方法,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • ?Java?SE?面向對象編程的3個常用接口

    ?Java?SE?面向對象編程的3個常用接口

    這篇文章主要f?Java?SE?面向對象編程的3個常用接口,Comparable、Comparator?比較器、Cloneable,下面文章詳細介紹,需要的小伙伴可以參考一下
    2022-01-01
  • python淺拷貝與深拷貝使用方法詳解

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

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

    Pytorch的torch.nn.embedding()如何實現詞嵌入層

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

    Python實現多屬性排序的方法

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

最新評論