1. 程式人生 > 實用技巧 >Python常見面試題

Python常見面試題

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
def
student_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)
    return
list

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,類可以直接呼叫,可以操作類變數,
  • 靜態方法 脫離類而存在的,既不能操作類變數,也不能操作例項變數