python 面試常被詢問基本觀念(2021/06/29)
python 面試常被詢問基本觀念(2021/06/29)
資料來源: https://mp.weixin.qq.com/s/_lHkzk1D235BQrDVkiGTtw
1.python is和==的區別
is是用來判斷兩個變量引用的對像是否為同一個,==用於判斷引用對象的值是否相等。可以通過id()函數查看引用對象的地址。
2.list和tuple的區別?
list是一種有序的集合,可以隨時添加和刪除其中的元素。tuple是一種有序列表,它和list非常相似。tuple一旦初始化就不能修改,而且沒有append() insert()這些方法,可以獲取元素但不能賦值變成另外的元素。
不同點:list是可更改的,所以,可以insert,pop等,但是tuple是不可更改的,所以沒有增減函數,但是其餘的查詢len(),index()等函數都是一樣的。
3. Python裡面的字典的key可以用list嗎?可以用tuple嗎?可以用set嗎?
一個對象能不能作為字典的key,就取決於其有沒有__hash__方法。所以所有python自帶類型中,除了list、dict、set和內部至少帶有上述三種類型之一的tuple之外,其餘的對像都能當key。
4.講一下yield關鍵字?它的作用是啥?
yield是一個常用於python函數定義中的關鍵字,它的作用是返回一個可以用來迭代(for循環)的生成器,它的應用場景通常為一個需要返回一系列值的,含有循環的函數中。
5. python是解釋語言還是編譯語言
python 是解釋型的編程語言
6. xrange與range的區別
xrange 用法與range 完全相同,所不同的是生成的不是一個list對象,而是一個生成器。
7. Python裡面的lambda表達式寫一下,隨便寫一個
定義一個lambda表達式,求三個數的和:
8.Python裡面的三元運算符寫一下(x = 1 if x> y else 0)
9.python和java是解釋語言還是編譯語言
Java編譯性,python解釋性。
10.Python字典採用的是什麼數據結構?(使用的是key-value匹配的哈希結構)
11.Python的多線程能否用來做並行計算?(不能,它有GIL鎖,但可以用多進程實現並行)
12.Python中0.35/0.05等於多少?(python中/和//的區別)
” / ” 表示浮點數除法,返回浮點結果;
” // ” 表示整數除法,返回不大於結果的一個最大的整數
13.python傳參會改變原值嗎
當我們傳的參數是int、字符串(string)、float、(數值型number)、元組(tuple) 時,無論函數中對其做什麼操作,都不會改變函數外這個參數的值;
當傳的是字典型(dictionary)、列表型(list)時,如果是重新對其進行賦值,則不會改變函數外參數的值,如果是對其進行操作,則會改變。即變量中存儲的是引用, 是指向真正內容的內存地址, 對變量重新賦值, 相當於修改了變量副本存儲的內存地址, 而這時的變量已經和函數體外的變量不是同一個了, 在函數體之外的變量, 依舊存儲的是原本的內存地址, 其值自然沒有發生改變。