91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

10個Python面試常問的問題分別是哪些

發布時間:2021-10-26 17:32:41 來源:億速云 閱讀:199 作者:柒染 欄目:編程語言

10個Python面試常問的問題分別是哪些,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

概述

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

1、類繼承

有如下的一段代碼:

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__ = Aobj.show()

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

2、方法對象

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

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

3、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__是創建對象是調用的。

4、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'])

5、全局和局部變量

下面這段代碼輸出什么?

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

6、交換兩個變量的值

一行代碼交換兩個變量值

a=8  b=9

答案:

(a,b) = (b,a)

7、默認方法

如下的代碼

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函數,上面的代碼應該輸出

defaultdefaultdefault

答案:

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)

8、包管理

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

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

__all__ = ['mod1','mod3']

9、閉包

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

答案:

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

10、性能

解析下面的代碼慢在哪

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

答案:python的str是個不可變對象,每次迭代,都會生成新的str對象來存儲新的字符串,num越大,創建的str對象越多,內存消耗越大。

關于10個Python面試常問的問題分別是哪些問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特前旗| 成武县| 丰台区| 金坛市| 金堂县| 六枝特区| 罗山县| 长海县| 印江| 宣恩县| 平山县| 平邑县| 威远县| 潞城市| 松滋市| 沙田区| 青州市| 浦县| 大方县| 六盘水市| 东乡| 时尚| 中超| 于田县| 达日县| 东乌| 冷水江市| 武义县| 桂东县| 梨树县| 定结县| 台前县| 根河市| 奎屯市| 定远县| 阿拉尔市| 铜鼓县| 冀州市| 蒙山县| 墨竹工卡县| 舞钢市|