公眾號新增加了一個欄目,就是每天給大家解答一道Python常見的面試題,反正每天不貪多,一天一題,正好合適,只希望這個面試欄目,給那些正在準備面試的同學,提供一點點幫助!
小猿會從最基礎的面試題開始,每天一題。如果參考答案不夠好,或者有錯誤的話,麻煩大家可以在留言區給出自己的意見和討論,大家是要一起學習的 。
廢話不多說,開始今天的題目:
問:Python中 *args 和 **kwargs 的含義?
答:在python中,*args和**kwargs通常使用在函數定義裡。*args 和 **kwargs 都允許你給函數傳不定數量的參數,即使在定義函數的時候不知道調用者會傳遞幾個參數。ps: *args和**kwargs只是一個大家都遵守的習慣,名字可以任意寫的 。
1. *args例子*args能夠接收不定量的非關鍵字參數,會把位置參數轉化為tuple(非鍵值對的參數組),例子如下面代碼所示:def func(*args):
for i in args:
print(i)
func(1,2,3,4)
運行結果:
1
2
3
4
**kwargs允許你傳遞不定量個關鍵字參數。如果你需要在函數中定義不定量個命名參數,那麼你就要使用**kwargs了,它會把關鍵字參數轉化為dict(鍵值對參數組),例子如下面代碼所示:
def func(**kwargs):
for i in kwargs:
print(i,kwargs[i])
func(a=1,b=2,c=3,d=4)
運行結果:
a 1
b 2
c 3
d 4
def func(**kwargs):
for i in kwargs:
print(i,kwargs[i])
func(1,2,3,4)
運行結果:
Traceback (most recent call last):
File "F:/pyworkspace/hello.py", line 4, in <module>
func(1,2,3,4)
TypeError: func() takes 0 positional arguments but 4 were given
如果對於參考答案有不認同的,大家可以在評論區指出和補充,歡迎留言!
更多題目:
20、說說HTTP常見響應狀態碼?
21、Python 單、雙引號、三引號區別?
22、說說Python中猴子補丁是什麼?
23、說說Python中的垃圾回收機制?
24、Python中有幾種交換兩個變量的值?
25、說說Python中的6種位運算符?
26、說說Python中的類型轉換有哪些?
27、Python中實現二分查找的2種方法?
28、說說Python中的lambda表達式?
29、說說Python中的反射是什麼?
30、Python刪除list重複元素有幾種方法?
31、Python中__new__和__init__的區別?
32、說說Python中的help()和dir()函數?
33、說說Python中的GIL是什麼?
34、說說提高Python運行效率的技巧?
35、說說對於Python裝飾器的理解?
36、說說Python中的異常捕獲?
37、Python的單例模式有幾種實現方式?
關注小猿公眾號,每天學習一道題