Python常見面試題
阿新 • • 發佈:2020-10-16
1.下面程式碼輸出結果是一樣嗎?
import copy a = ('a','b','c') b=a c=copy.copy(a) d=copy.deepcopy(a)
print(id(b))
print(id(c))
print(id(d))
一樣,因為a為不可變物件,對於不可變資料型別,記憶體中只能有一個相同值的物件.如果a是可變物件,則程式碼輸出的都不一樣
可變資料型別:列表list和字典dict
不可變資料型別:整型int、浮點型float、字串型string和元組tuple
2.請實現:@runtime效果為當呼叫student_run時會自動列印當前時間
@runtime defstudent_run(name): print("student"+name+"run") student_run("張三"")
實現程式碼
import time def runtime(function): def get_run_time(): print(time.time()) function() return get_now_time
3.請根據列表list1=[1,2,3,4,5,6,7,8,9],使用一行程式碼生辰給一個新的列表list2,list2中每個元素是list1中的平方
#方法一 lambda表示式list2 = list(map(lambda x : x*x,list1)) #方法二 列表推導式 list2=[x*x for x in list1]
4.用python實現冒泡演算法
def bubble_sort(list): length=len(list) for i in range(0,length): for j in range(i+1,length): if list(i) >list(j): list(i),list(j)=list(j),list(i) returnlist
5.用python實現快排
def quicksort(array): if len(array) < 2: return array else: pivot = array[0] #找到一個基準值 #遍歷整個列表,將小於這個基準值的元素放到一個子列表中 less = [i for i in array[1:] if i < pivot] #遍歷整個列表,將大於這個基準值的元素放到一個子列表中 greater = [i for i in array[1:] if i>pivot] #首先,明確我們對元素為0個/1個的列表無需要排序 #使用函式遞迴 #目標:讓我們在一個基準值的一側變為有序,然後依次返回,讓我們的每個基準值的兩側都變得有序 return quicksort(less)+[pivot]+quicksort(greater) #這是一些測試樣例 print(quicksort([2,5,3,9,7,11])) print(quicksort([152,134,38796,7438415,1,2272,34345,24,127]))
6.python中的私有變數能訪問嗎,如果能訪問,如何訪問?
可以訪問,通過__類名__變數名訪問
7.python中的類有多少方法種類,他們的區別是什麼?
- 例項方法 必傳引數self,只有例項可以操作的方法,可以操作例項變數
- 類方法 必傳引數cls,需要新增@classmethod,類可以直接呼叫,可以操作類變數,
- 靜態方法 脫離類而存在的,既不能操作類變數,也不能操作例項變數