首頁  >  文章  >  後端開發  >  python面試常見問題有哪些

python面試常見問題有哪些

coldplay.xixi
coldplay.xixi原創
2020-10-27 09:58:144159瀏覽

python面試常見問題有:1、Python是如何被解釋的;2、什麼是PEP8;3、Python是怎樣管理記憶體的;4、什麼是Python裝飾器;5、Python提供哪些內建類型等等。

python面試常見問題有哪些

大量免費學習推薦,請造訪python教學(影片)

python面試常見問題有:

1、Python是什麼?簡述並說明優點和缺點?

Python是一種物件導向的解釋性電腦程式語言,它是結合了解釋性、編譯性、互動性和物件導向的腳本語言。

優點:開源、免費、簡單、易學、可移植、可擴展、易於維護、開發效率高。

缺點:運作速度慢、程式碼不能加密。

2、Python是如何被解釋的?

Python是一種解釋性語言,它的原始碼可以直接運作。 Python解釋器會將原始碼轉換成中間語言,之後再翻譯成機器碼再執行。

3、什麼是PEP8?

PEP8是一個程式規範,是讓程式更具可讀性的一些建議。

4、Python是怎麼管理記憶體的?

1)引用計數機制:Python內部使用引用計數,來保持追蹤記憶體中的物件。

2)垃圾回收機制:當一個物件的引用數歸零時,它將被垃圾收集機制處理掉;

                                    

3).記憶體池機制:

Python提供了對記憶體的垃圾收集機制,但是它將不用的內存放到記憶體池而不是傳回給作業系統:

Pymalloc機制:為了加速Python的執行效率,Python引入了一個記憶體池機制,用於管理對小塊記憶體的申請和釋放。

對於Python對象,如整數,浮點數和List,都有其獨立的私有記憶體池,物件間不共享他們的記憶體池。也就是說如果你分配又釋了大量的整數,用來快取這些整數的記憶體就不能再分配給浮點數。

 

Python裝飾器是一個函數,是Python中的特有變動,可以讓修改函數變得更容易。它可以使函數在不修改本身的函數定義外,動態產生額外的功能。

5、什麼是Python裝飾器?

Python裝飾器是一個函數,是Python中的特有變動,可以讓修改函數變得更容易。它可以使函數在不修改本身的函數定義外,動態產生額外的功能。

迭代器、生成器

可迭代對象:可以使用for-in遍歷的對象,都是可迭代對象

在Python中如果一個對像有__iter__ ( )方法或__getitem__( )方法,則稱這個物件是可迭代的(Iterable);其中__iter__( )方法的作用是讓物件可以用for ... in迴圈遍歷,__getitem__( )方法是讓物件可以透過「實例名[index]」的方式存取實例中的元素。換句話說,兩個條件只要滿足一條,就可以說物件是可迭代的。顯然列表List、元組Tuple、字典Dictionary、字串String等資料型別都是可迭代的。

迭代器:迭代器是存取集合元素的一種方式。能夠使用for-in進行遍歷,並能使用next函數進行迭代的物件

在Python中如果一個物件有__iter__( )方法和__next__( )方法,則稱這個物件是迭代器( Iterator);其中__iter__( )方法是讓物件可以用for ... in迴圈遍歷,__next__( )方法是讓物件可以透過next(實例名)存取下一個元素。注意:這兩個方法必須同時具備,才能稱之為迭代器。列表List、元組Tuple、字典Dictionary、字串String等資料型別雖然是可迭代的,但都不是迭代器,因為他們都沒有next( )方法。

6、函數閉包

引用了自由變數的函數就是一個閉包. 這個被引用的自由變數和這個函數一同存在, 即使已經離開了創造它的環境也不例外.

7、陣列和元組之間的區別是什麼?

陣列和元組之間的差異:陣列內容是可以被修改的,而元組內容是唯讀的。另外,元組可以被哈希,例如作為字典的關鍵字。

8、類別方法和靜態方法

method:透過實例調用,可以引用類別內部的任何屬性和方法

classmethod:無需實例化,可以呼叫類別屬性和類別方法,無法取到普通的成員屬性和方法

staticmethod:無需實例化,無法取到類別內部的任何屬性和方法, 完全獨立的一個方法

9、Python提供哪些內建類型?

整數(int)、字串(str)、元組(tuple)、布林(bool)、集合(set)、列表(list)、字典(dict)

10 、字典推導式和列表推導式是什麼?

它們是可以輕鬆建立字典和清單的語法結構。

參數是按值傳遞和引用傳遞是怎麼實現的?

Python中的一切都是類,所有的變數都是一個物件的參考。引用的值是由函數決定的,因此無法被改變。但是如果一個物件是可以被修改的,你可以改動物件。

11、Python中的lambda是什麼?

這是一個匿名函數,常被用於程式碼中的單一表達式。

12、Python中的pass是什麼?

pass是佔位符,用來表示空白,不被執行。

13、Python中淺拷貝和深拷貝的差別?

copy.copy()淺拷貝:拷貝了對象,但拷貝對象的值仍然是指向原始對象的值(相當於引用),修改拷貝對象的元素,則被拷貝對象的值也會被修改。

copy.deepcopy()深拷貝: 不僅拷貝了對象,同時也拷貝了對像中的元素,獲得了全新的對象,與被拷貝對象完全獨立;但這需要犧牲一定的時間和空間。

14、Python中的模組和套件是什麼?

在Python中,模組是搭建程式的一種方式。每一個Python程式碼檔案都是一個模組,並且可以引用其他的模組,例如物件和屬性。

一個包含許多Python程式碼的資料夾是一個套件。一個包可以包含模組和子資料夾。

以上是python面試常見問題有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn