天天看點

Python 的特性

Copyright © 1999-2019, CSDN.NET, All Rights Reserved

​​

Python 的特性
原 python面試題整理(一)

前言

Python 是一門兼具簡單與功能強大的程式設計語言。你無須浪費時間去造輪子,它會讓我們專注于如何去解決問題。它的靈活性、易用性、簡潔性、豐富的資源使得它廣泛應用在不同領域。近年來,随着人工智能的浪潮洶湧來襲,python當之無愧成了大家的寵兒,當然,在你履歷上如果寫着你會python,那麼,面試官就會問你很多有關python語言的小問題,為了便于自己複習,筆者特意整理了python面試題系列(習題難易程度和順序無關),希望在幫到自己的同時也幫到廣大程式設計愛好者或者求職者。

話不多說,直接上題:

面試題

1.Python裡面search()和match()的差別?

match()函數隻檢測RE是不是在string的開始位置比對,search()會掃描整個string查找比對, 也就是說match()隻有在0位置比對成功的話才有傳回,如果不是開始位置比對成功的話,match()就傳回none。

2.Python裡面如何生成随機數?

import random

random.random()

它會傳回一個随機的0和1之間的浮點數

3.python中如何在一個function裡面設定一個全局的變量? 

​global​

​​語句被用來聲明​

​x​

​​是全局的——是以,當我們在函數内把值賦給​

​x​

​​的時候,這個變化也反映在我們在主塊中使用​

​x​

​​的值的時候。你可以使用同一個​

​global​

​​語句指定多個全局變量。例如​

​global x, y, z​

​。

4.如何用Python删除一個檔案?

使用os.remove(filename)或者os.unlink(filename)

5.什麼是lambda函數?它有什麼好處?

當我們在傳入函數時,有些時候,不需要顯式地定義函數,直接傳入匿名函數更友善。lambda 函數是一個可以接收任意多個參數(包括可選參數)并且傳回單個表達式值的函數。 lambda 函數不能包含指令,它們所包含的表達式不能超過一個。不要試圖向lambda 函數中塞入太多的東西;如果你需要更複雜的東西,應該定義一個普通函數,然後想讓它多長就多長。

舉個栗子:

  1. f = lambda x:x**2
  2. print(f(4))

6.Python裡面如何實作tuple和list的轉換?

這個直接轉換就好,看下面的栗子:

  1. >>> l = [1,2,3,4,5]
  2. >>> tuple(l)
  3. (1, 2, 3, 4, 5)
  4. >>> t = (1,2,3,4,5)
  5. >>> list(t)
  6. [1, 2, 3, 4, 5]

7.Python是如何進行記憶體管理的?

Python引用了一個記憶體池(memory pool)機制,即Pymalloc機制(malloc:n.配置設定記憶體),用于管理對小塊記憶體的申請和釋放

記憶體池(memory pool)的概念:

  當 建立大量消耗小記憶體的對象時,頻繁調用new/malloc會導緻大量的記憶體碎片,緻使效率降低。記憶體池的概念就是預先在記憶體中申請一定數量的,大小相等 的記憶體塊留作備用,當有新的記憶體需求時,就先從記憶體池中配置設定記憶體給這個需求,不夠了之後再申請新的記憶體。這樣做最顯著的優勢就是能夠減少記憶體碎片,提升效率。

記憶體池的實作方式有很多,性能和适用範圍也不一樣。 

python中的記憶體管理機制——Pymalloc:

  python中的記憶體管理機制都有兩套實作,一套是針對小對象,就是大小小于256bits時,pymalloc會在記憶體池中申請記憶體空間;當大于256bits,則會直接執行new/malloc的行為來申請記憶體空間。

  關于釋放記憶體方面,當一個對象的引用計數變為0時,python就會調用它的析構函數。在析構時,也采用了記憶體池機制,從記憶體池來的記憶體會被歸還到記憶體池中,以避免頻繁地釋放動作。

8.到底什麼是Python?

下面是一些關鍵點:

  • Python是一種解釋型語言。這就是說,與C語言和C的衍生語言不同,Python代碼在運作之前不需要編譯。其他解釋型語言還包括PHP和Ruby。
  • Python是動态類型語言,指的是你在聲明變量時,不需要說明變量的類型。你可以直接編寫類似​

    ​x=111​

    ​​和​

    ​x="I'm a string"​

    ​這樣的代碼,程式不會報錯。
  • Python非常适合面向對象的程式設計(OOP),因為它支援通過組合(composition)與繼承(inheritance)的方式定義類(class)。Python中沒有通路說明符(access specifier,類似C++中的​

    ​public​

    ​private​

    ​),這麼設計的依據是“大家都是成年人了”。
  • 在Python語言中,函數是第一類對象(first-class objects)。這指的是它們可以被指定給變量,函數既能傳回函數類型,也可以接受函數作為輸入。類(class)也是第一類對象。
  • Python代碼編寫快,但是運作速度比編譯語言通常要慢。好在Python允許加入基于C語言編寫的擴充,是以我們能夠優化代碼,消除瓶頸,這點通常是可以實作的。​

    ​numpy​

    ​就是一個很好地例子,它的運作速度真的非常快,因為很多算術運算其實并不是通過Python實作的。
  • Python用途非常廣泛——網絡應用,自動化,科學模組化,大資料應用,等等。它也常被用作“膠水語言”,幫助其他語言群組件改善運作狀況。
  • Python讓困難的事情變得容易,是以程式員可以專注于算法和資料結構的設計,而不用處理底層的細節。