Python高頻面試題及其答案

命名空間和作用域的關係:

命名空間定義了在某個作用域內變量名和綁定值之間的對應關係,
命名空間是鍵值對的集合,變量名與值是一一對應關係。
作用域定義了命名空間中的變量能夠在多大範圍內起作用。

裝飾器函數的作用?寫一個裝飾器程序:

在不修改原函數及其調用方式的情況下對原函數功能進行擴展
def outer(f):
    def inner():
        print("**")
        f()
        print("*")
    return inner
@outer**
def func():**
    print("華晨宇演唱會")**
func()*

****

閉包的形成要件是什麼,寫一個閉包函數:

閉包函數必須有內嵌函數、
內嵌函數必須要引用外層函數的變量、
閉包函數返回內嵌函數的地址(函數名稱)
def func():
    name="ruirui"
    def inner():
        print(name)
    return inner
f=func()
f()

***

簡述try、except語句的用法:

程序先執行try中的代碼,如果try中代碼沒有出錯,則不會執行except中的異常代碼。
如果try中的代碼出錯了,則執行exception中的異常代碼。

簡述read, readline, readlines的區別:

read會一次性讀取文件的全部內容
readline 每次讀取一行,並且自帶換行功,每一行末尾會讀到\n
Readlines  一次性以行的形式讀取文件的所有內容並返回一個list,需要去遍歷讀出來

簡述深拷貝和淺拷貝:

淺拷貝:對內存地址的複製,讓目標對象指針和源對象指向同一片內存空間。
深拷貝:拷貝對象的具體內容,二內存地址是自主分配的,
拷貝結束之後倆個對象雖然存的值是一樣的,但是內存地址不一樣,倆個對象頁互相不影響,互不干涉

簡述python中類方法和靜態方法:

類方法是類對象的方法,在定義時需要在上方使用“@classmethod”進行裝飾,
形參爲 cls,表示類對象,類對象和實例對象都可調用。      
 靜態方法是一個任意函數,在其上方使用“@staticmethod”進行裝飾,可以用對象直接調用,
靜態方法實際上跟該類沒有太大關係。

請簡述你對面向對象的理解:

在編寫代碼時只寫框架思路,具體實現還未編寫就可以用 pass 進行佔位,使程序不報錯,
不會進面向對象的編程,簡稱:OOP,是一種編程的思想。
OOP把對象當成一個程序的基本單元,一個對象包含了數據和操作數據的函數。
面向對象的出現極大的提高了編程的效率,使其編程的重用性增高。
python面向對象的重要術語:
  1.多態(polymorphism):一個函數有多種表現形式,調用一個方法有多種形式,但是表現出的方法是不一樣的。
  2.繼承(inheritance)子項繼承父項的某些功能,在程序中表現某種聯繫
  3.封裝(encapsulation)把需要重用的函數或者功能封裝,方便其他程序直接調用
  4.類:對具有相同數據或者方法的一組對象的集合
  5.對象:對象是一個類的具體事例




簡述實例屬性與類屬性的區別以及實例方法與類方法,靜態方法的區別:

類屬性和實例屬性的區別:在Python中一切皆對象,類是一個特殊的對象即類對象,
描述類的屬性稱爲類屬性,它屬於類。類屬性在內存中只有一份,所有實例對象公用,在init外部定義。

實例屬性:用來描述類創建出來的實例對象,需要通過對象來訪問,
在各自對象的內存中都保存一份,在init方法內部定義

實例方法、類方法、靜態方法的區別:

這三種方法都是保存在類的內存中,調用者不同。實例方法由對象調用,
至少一個self參數,self代表對象的引用。類方法由類調用,至少一個cls參數,
並且需要裝飾器@classmethod修飾靜態方法由類調用,不需要參數,
需要裝飾器@staticmethod修飾

給定兩個 list A ,B,請用找出 A ,B 中相同的元素,A ,B 中不同的元素:

A、B 中相同元素:print(set(A)&set(B))     
A、B 中不同元素:print(set(A)^set(B))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章