日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python测开面试题_python十道经典面试题,测试你的python功底!

發布時間:2024/7/23 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python测开面试题_python十道经典面试题,测试你的python功底! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源:python學習專欄

第一題,對象的類屬性指向類對象class A():

def show(self):

print( A_show )

class B():

def show(self):

print( B_show )

obj =B()

obj.show()

#這樣我們能夠正常調用

#那么我們能不能

#obj.show()

#我們想調用A中的show

我們看一下obj.__class__ =A

obj.show()

這樣就可以直接調用了

第二題、方法對象__call__class People():

def __init__(self,length):

self.__length = length

def hand(self):

print( 手有 {} 米 .format(self.__length))

a=People(1)

a.hand() #這樣我們是能夠完美運行的

那么我們不小心 a(10) 這樣了,我希望他能夠正常運行

這里我們需要用到一個對象方法__call__class People():

def __init__(self,length):

self.__length = length

def hand(self):

print( 手有 {} 米 .format(self.__length))

def __call__(self, *args):

return self.hand()

a=People(1)

a() #這時a() 會找到__call__ 然后運行返回的函數

第三題,__new__ 和 __init__

1.init 通常用于初始化一個新實例,控制這個初始化的過程,比如添加一些屬性, 做一些額外的操作,發生在類實例被創建完以后。它是實例級別的方法。

2 ,new 通常用于控制生成一個新實例的過程。它是類級別的方法。

__new__ 在__init__ 之前運行

3 new至少要有一個參數cls,代表要實例化的類,此參數在實例化時由Python解釋器自動提供

4 new必須要有返回值,返回實例化出來的實例,這點在自己實現new時要特別注意,可以return父類new出來的實例,或者直接是object的new出來的實例

class A():

def func(self):

print( A_func )

def __init__(self):

print( A_init )

class B():

def func(self):

print( B_func )

def __new__(cls, a):

print( new ,a)

if a>10:

return super(B,cls).__new__(cls)

return A()

def __init__(self,a):

print( B_init )

#想想輸出結果

a = A()

b = B(5)

b.func()

b = B(11)

b.func()

第四題 ,列表解析式

生成列表list1 = [1,2,3,4]

#取出list1中大于二的值

list2 =[i for i in list1 if i>2]

print(list2)

生成字典dict1 = {i: i*2 for i in list1 if i*2 >4 }

print(dict1)dict2 = {i: items +str(i*2) for i in list1 if i*2 >4 }

print(dict2)

第五題,變量域num = 666

def f1():

num = 888

print(num)

def f2():

print(num)

print(num)

f1()

print(num)

f2()

# 666

#888

#666

#666

需要在函數中改變變量

我們需要使用global

這只是局部變量和全局變量的變量域

我們繼續看一下函數嵌套的變量域def fun():

num = 0

def fun1():

num = 1

def fun2():

print(num)

fun2()

fun1()

fun()

#1

在函數嵌套中變量會逐級網上找變量

這樣不會存在找不到變量的問題

在fun2()找不到會到fun1()中找

第六題,默認方法,python反射機制,getattrclass A:

def __init__(self,a,b):

self.a = a

self.b = b

def func(self):

print( a+b={} .format(self.a+self.b))

a1 = A(1,2)

a1.func()

#al.fun() 這樣呢,就該報錯了

好吧,我不想讓它報錯class A:

def __init__(self,a,b):

self.a = a

self.b = b

def func(self):

print( a+b={} .format(self.a+self.b))

def __getattr__(self,args):

return self.func #切記這里不能加() 因為 func()()是不能執行的

a1 = A(1,2)

a1.fun()

#3

__getattr__,hasattr

這是python的反射機制,getattr會接收參數,

然后執行,對應的還有hasattr,大家可以自己深究

第七題,包管理

當 一個包pack里有三個模塊,model, model2, model3,

采用from pack import *

怎樣只導入 model model2

添加 __init__.py文件,在文件中加入__all__ = [ model , model2 ]

就能實現了

第八題, 函數閉包

#要求,寫一個函數,接受一個整數參數N,返回一個函數,函數功能是把,函數的參數和N相乘的結果返回def f1(N):

def f2(val):

return N*val

return f2

這題解釋量比較大,大家可以到我的另外一篇文章學習

點擊鏈接就可以跳轉

第十題,裝飾器

裝飾器本質就是函數 功能是為其它的函數添加功能

原則是

1,不改變修飾函數的源代碼

2, 不修改修飾函數的調用方式

裝飾器=高階函數+函數嵌套+閉包

我想在不改變一個函數源碼狀態下,測試運行時間import time

def timer(func):

def wapper(a,*args, **kwargs):

if a ==1:

start = time.time()

res = func(*args, **kwargs)

end = time.time()

print( 函數運行時間 ,end-start)

return res

else:

return 1

return wapper

#我們測試下面這個函數的時間

#只需要把上面的函數加一個@寫在函數上

#就可以實現了

a=1

@timer

def cal(a,l):

res = 0

for i in l:

time.sleep(0.01)

res+=i

return res

res = cal(range(20))

print(res)

運行一下,你就知道裝飾器的強大之處了

知道這些面試題,并不代表你面試就能夠順利通過

我們還是需要在平時多記錄知識

祝大家早日找到適合自己的工作

今天的十道題就到這里了

總結

以上是生活随笔為你收集整理的python测开面试题_python十道经典面试题,测试你的python功底!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。