Python常見面試題

2021-10-10 17:58:57 字數 4383 閱讀 2026

常見面試題

詳細參見: 新增鏈結描述

當我們不知道向函式傳遞多少引數時,比如我們向傳遞乙個列表或元組,我們就使用*args。

在我們不知道該傳遞多少關鍵字引數時,使用kwargs來收集關鍵字引數。

一、*args的使用方法

*args 用來將引數打包成tuple**給函式體呼叫

二、**kwargs的使用方法

**kwargs 打包關鍵字引數成dict給函式體呼叫

注意點:引數arg、args、kwargs三個引數的位置必須是一定的*。必須是(arg,*args,kwargs)這個順序,否則程式會報錯

python 中 *args 和 **kwargs 的區別

三、在 python 中,*args 和kwargs 都代表 1個 或 多個 引數的意思。*args 傳入tuple 型別的無名引數,而 **kwargs 傳入的引數是dict 型別。

在不知道傳入多少個引數時,args是乙個陣列,kwargs乙個字典。

重點參考

其次參考

1.深淺拷貝在python中經常使用,其區別的外在表現是:

使用淺拷貝,當原容器物件中可變物件中有元素發生變化,拷貝得到的物件也會變化。而使用深拷貝時,不會有這種問題。

2.淺拷貝

copy模組裡面的copy方法實現

1)對於不可變型別 number string tuple,淺複製僅僅是位址指向,不會開闢新空間

2)對於可 變型別 list、dictionary、set,淺複製會開闢新的空間位址(僅僅是最頂層開闢了新的空間,裡層的元素位址還是一樣的),進行淺拷貝

3)淺拷貝後,改變原始物件中為可變型別的元素的值會同時影響拷貝物件的;改變原始物件中為不可變型別的元素的值只有原始型別受影響。(操作拷貝物件對原始物件的也是同理)

深拷貝3.copy模組裡面的deepcopy方法實現

4.什麼是可變物件,什麼是不可變物件:

可變物件是指,乙個物件在不改變其所指向的位址的前提下可以修改其所指向的位址中的值

不可變物件是指,乙個物件所指向的位址上值是不能修改的,如果你修改了這個物件的值,那麼它指向的位址就改變了,相當於你把這個物件指向的值複製出來乙份,然後做了修改後存到另乙個位址上了,但是可變物件就不會做這樣的動作,而是直接在物件所指的位址上把值給改變了,而這個物件依然指向這個位址。

裝飾器參考鏈結

python time模組和datetime模組詳解

import time

defcount_time

(func)

:def

int_time

(*args,

**kwargs)

: start_time = time.time(

)# 程式開始時間

func(

) over_time = time.time(

)# 程式結束時間

total_time = over_time - start_time

print

('程式共計%s秒'

% total_time)

return int_time

@count_time

defmain()

:print

('>>>>開始計算函式執行時間'

) x =

0for i in

range

(1000000):

x=x//

13print

(x)if __name__ ==

'__main__'

: main(

)

import datetime

defcount_time

(func)

:def

int_time

(*args,

**kwargs)

: start_time = datetime.datetime.now(

)# 程式開始時間

func(

) over_time = datetime.datetime.now(

)# 程式結束時間

total_time =

(over_time-start_time)

.total_seconds(

)print

('程式共計%s秒'

% total_time)

return int_time

@count_time

defmain()

:print

('>>>>開始計算函式執行時間'

)for i in

range(1

,1000):

# 可以是任意函式 , 這裡故意模擬函式的執行時間

for j in

range

(i):

print

(j)if __name__ ==

'__main__'

: main(

)

1. 數字型別

python數字型別主要包括int(整型)、long(長整型)和float(浮點型)、complex(複數),但是在python3中就不再有long型別了。

int(整型)

在32位機器上,整數的位數是32位,取值範圍是-231231-1,即-2147483648214748364;在64位系統上,整數的位數為64位,取值範圍為-263263-1,即92233720368547758089223372036854775807。

long(長整型)

python長整型沒有指定位寬,但是由於機器記憶體有限,使用長的長整數數值也不可能無限大。

float(浮點型)

浮點型也就是帶有小數點的數,其精度和機器有關。

complex(複數)

python還支援複數,複數由實數部分和虛數部分構成,可以用 a + bj,或者 complex(a,b) 表示, 複數的實部 a 和虛部 b 都是浮點型。

2. 字串

在python中,加了引號的字元都被認為是字串,其宣告有三種方式,分別是:單引號、雙引號和三引號;python中的字串有兩種資料型別,分別是str型別和unicode型別,str型別採用的ascii編碼,無法表示中文,unicode型別採用unicode編碼,能夠表示任意字元,包括中文和其他語言。

3. 布林型

和其他程式語言一樣,python布林型別也是用於邏輯運算,有兩個值:true(真)和false(假)

4. 列表

列表是python中使用最頻繁的資料型別,集合中可以放任何資料型別,可對集合進行建立、查詢、切片、增加、修改、刪除、迴圈和排序操作。

5. 元組

元組和列表一樣,也是一種序列,與列表不同的是,元組是不可修改的,元組用**」()」標識**,內部元素用逗號隔開

6. 字典

字典是一種鍵值對的集合,是除列表以外python之中最靈活的內建資料結構型別,列表是有序的物件集合字典是無序的物件集合

7.集合

Python常見面試題

1 python生成隨機數 import random random.random 隨機生成0 1之間的數字 random.uniform 1,10 隨機生成1 10之間的數字 包括小數整數 random.randint 1,10 生成1 10之間的整數 random.randrange 1,10,...

python常見面試題

看兩個例子 python a 1 def fun a a 2 fun a print a 1 python a def fun a fun a print a 1 所有的變數都可以理解是記憶體中乙個物件的 引用 或者,也可以看似c中void 的感覺。這裡記住的是型別是屬於物件的,而不是變數。而物件有...

python常見面試題

有如下的一段 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 a obj.show...