常見面試題
詳細參見: 新增鏈結描述
當我們不知道向函式傳遞多少引數時,比如我們向傳遞乙個列表或元組,我們就使用*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...