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

10個Python面試常問的問題(小結(jié))

 更新時間:2019年11月20日 09:18:47   作者:我愛學python  
這篇文章主要介紹了10個Python面試常問的問題(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

概述

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

類繼承

有如下的一段代碼:

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,但是用完了記得修改回來。

方法對象

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

 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)

答案:為了能讓對象實例能被直接調(diào)用,需要實現(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方法,可以決定返回那個對象,也就是創(chuàng)建對象之前,這個可以用于設(shè)計模式的單例、工廠模式。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不是個全局變量,所以每個函數(shù)都得到了自己的num拷貝,如果你想修改num,則必須用global關(guān)鍵字聲明。比如下面這樣

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 都沒有定義,添加代碼,是沒有定義的方法都調(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只有當沒有定義的方法調(diào)用時,才是調(diào)用他。當fn1方法傳入?yún)?shù)時,我們可以給mydefault方法增加一個*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)

包管理

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

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

__ all__ = ['mod1','mod3']

閉包

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中的數(shù)據(jù)分析詳解

    Python中的數(shù)據(jù)分析詳解

    這篇文章主要介紹了Python中的數(shù)據(jù)分析詳解,對數(shù)據(jù)進行分析,數(shù)據(jù)分析是指根據(jù)分析目的,用適當?shù)慕y(tǒng)計分析方法及工具,對收集來的數(shù)據(jù)進行處理與分析,提取有價值的信息,發(fā)揮數(shù)據(jù)的作用,需要的朋友可以參考下
    2023-07-07
  • python中numpy 數(shù)組過濾詳解

    python中numpy 數(shù)組過濾詳解

    這篇文章主要介紹了python中numpy 數(shù)組過濾詳解的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 利用Python實現(xiàn)自動工作匯報的腳本分享

    利用Python實現(xiàn)自動工作匯報的腳本分享

    這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)一個自動工作匯報的腳本,文中的示例代碼講解詳細,對我們學習Python有一定幫助,需要的可以參考一下
    2022-08-08
  • python?查看cpu的核數(shù)實現(xiàn)

    python?查看cpu的核數(shù)實現(xiàn)

    這篇文章主要介紹了python?查看cpu的核數(shù)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python函數(shù)傳參意義示例詳解

    python函數(shù)傳參意義示例詳解

    這篇文章主要為大家介紹了關(guān)于python函數(shù)傳參的意義示例詳解,有需要的朋友可以借鑒參考下,希望可以加深各位同學對Python傳參的理解
    2021-10-10
  • python區(qū)分不同數(shù)據(jù)類型的方法

    python區(qū)分不同數(shù)據(jù)類型的方法

    這篇文章主要介紹了python區(qū)分不同數(shù)據(jù)類型的方法實例以及相關(guān)知識點,需要的朋友們學習下。
    2019-10-10
  • Flask的圖形化管理界面搭建框架Flask-Admin的使用教程

    Flask的圖形化管理界面搭建框架Flask-Admin的使用教程

    Flask-Admin是一個為Python的Flask框架服務(wù)的微型框架,可以像Django-Admin那樣為用戶生成Model層面的數(shù)據(jù)管理界面,接下來就一起來看一下Flask的圖形化管理界面搭建框架Flask-Admin的使用教程
    2016-06-06
  • Pycharm中配置使用Anaconda的虛擬環(huán)境進行項目開發(fā)的圖文教程

    Pycharm中配置使用Anaconda的虛擬環(huán)境進行項目開發(fā)的圖文教程

    今天在一臺電腦上跑環(huán)境的時候,發(fā)現(xiàn)已經(jīng)裝了Pytorch了,但是運行沒有用,提示報錯:OSError:?[WinError?126]?找不到指定的模塊,但其實cmd進入虛擬環(huán)境是可以調(diào)用torch的,故本文給大家介紹了Pycharm中配置使用Anaconda的虛擬環(huán)境進行項目開發(fā)的圖文教程
    2024-09-09
  • python列表添加元素append(),extend(),insert(),+list的區(qū)別及說明

    python列表添加元素append(),extend(),insert(),+list的區(qū)別及說明

    這篇文章主要介紹了python列表添加元素append(),extend(), insert(),+list的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python中使用Chaco繪圖庫

    Python中使用Chaco繪圖庫

    這篇文章主要介紹了Python中使用Chaco繪圖庫,Chaco是一個2D的繪圖庫,如果你安裝了Python(x,y)的話,可以在pythonxy的安裝目錄下的找到Chaco的demo程序,Chaco提供了類似Matlab和pylab的繪圖方式,我們稱之為面向腳本的繪圖方式
    2023-11-11

最新評論

娄底市| 衡阳市| 吴川市| 鄂托克前旗| 临江市| 兖州市| 郧西县| 巴楚县| 平潭县| 玛多县| 房山区| 龙泉市| 樟树市| 会昌县| 黔南| 永嘉县| 金平| 汉寿县| 扬中市| 靖西县| 关岭| 嘉荫县| 濮阳县| 定兴县| 武穴市| 靖江市| 无棣县| 保德县| 宁波市| 苍梧县| 古交市| 宁海县| 敖汉旗| 哈巴河县| 洛宁县| 潢川县| 巧家县| 辉县市| 东光县| 清徐县| 昌宁县|