日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python编程a的x次方_「Python 面试」第四次更新

發布時間:2024/8/23 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python编程a的x次方_「Python 面试」第四次更新 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

閱讀本文大約需要 5 分鐘。

15.說一說 GIL

前面有提到由于 Python 基于 C 語言編寫的解釋器中設置了一個 GIL 全局變量鎖,該鎖使得 Python 的多線程在處理 CPU 計算密集型任務時,同一時刻只能有一個線程在運行,這也是為什么說 Python 的多線程是一個「假性多線程」的原因。

解決 GIL 的辦法在處理 CPU 計算密集型任務時,使用多進程 + 協程,發揮計算機多核的威力,而處理 I/O 密集型,則可以使用多線程。

16.說一說 Python 中的垃圾回收機制(GC)

引用計數清零

標記-清除

隔代回收

這里有一篇文章可以參考一下。垃圾回收機制

17.說一說 Python 中的函數式編程

lambda

lambda 匿名函數,使用匿名函數可以幫助我們簡化代碼,且節省程序由于顯示創建函數的消耗。

示例:

# 冒號左邊是參數, 右邊是表達式,lambda 返回的是右邊表達式的結果

L2 = lambda x : x * x

print(L2(5))

# 結果為 25

map

map(func,*Iterable),map 函數通過將可迭代對象傳入 func 函數,全部執行。

示例:

# 相當于 [1*1, 2*2, 3*3, 4*4]

L2 = list(map(lambda x: x * x, range(1, 4)))

print(L2)

# 結果為

[1, 4, 9, 16]

reduce

reduce(func, *sequence),reduce 函數可以將函數 func 迭代調用。

示例:

from functools import reduce

# 相當于 ((1*2)*3)

L2 = reduce(lambda x, y: x * y, range(1, 4))

print(L2)

# 結果為

6

filter

filter(func,*Iterable),filter 函數通過將可迭代對象當做參數傳遞給 func 函數,并返回 func 函數中返回結果為 True 的值。

示例:

# 相當于 g = [x for x in range(10) if x < 3]

L2 = list(filter(lambda x: x < 3, range(10)))

print(L2)

# 結果為

[0, 1, 2]

18.is 和 == 的區別

a is b 比較的是 a 和 b 的「id」是否相同

a == b 比較的是 a 和 b 的「值」是否相同

19.range 和 xrange 的區別

對于現如今的 Python 3.x,這個問題其實已經沒有什么意義了,由于其在各大面經中都出現過,這里簡單解釋下。在 Python 2.x 中,range和xrange最大的區別就是xrange生成的不是一個list,而是一個生成器,這兩者的區別在問題 13 已經講過,這里不在贅述。

Python 3.x 中已經移除了range()方法,并將xrange()方法更名為range()。

20.新式類和舊式類的區別

新式類和舊式類的變化主要講的是 Python 中類的「繼承」問題。

舊式類中,類的繼承按照「從左往右,深度優先遍歷」的原則。

新式類中,類的繼承按照「C3 算法」的原則:如果子類在繼承來自不同父類的方法是不一樣的時候,會從下而上,先左后右的合并繼承方法。如果有一樣的方法,則會繼承第一個方法然后舍棄另一個相同的方法,接著合并其他不同的方法。解決了舊式類繼承中存在的二義性和單調性。

示例:

# 新式類

class B:

def __init__(self,name):

self.name = name

def get_name(self):

return 'B'

class C:

def __init__(self,name):

self.name = name

def get_name(self):

return 'C'

class BC(B, C):

pass

b = B('B')

c = C('C')

bc = BC('C')

print(bc.name)

name = bc.get_name()

print(name)

# 查看 c 在搜索方法時的先后順序

print(bc.__mro__)

# 結果為

C

B

(, , , )

另外,新式類相對于舊式類還多了這么些變化。

__slot__:限制實例屬性的設置范圍。

__getattrbute__:獲取實例屬性值。

type與__class__:返回類型統一。

至此,有關 Python 知識點的面試題就已告一段落,下次更新數據庫(MySQL,Redis)方面面試題。

所有內容均已上傳至「GitHub」倉庫,歡迎大家點擊原文查閱。

歡迎大家關注個人微信公眾號「PythonDeveloper」,所有內容第一時間更新于公眾號。

所有內容均為本人一點一點敲出來的,難免會有錯字、語句不通順的地方,歡迎大家指正。

所有示例均已在 Python 3.5 環境下測試通過,如有出錯地方,還請檢查自身 Python 版本。

因本人水平有限,文章內容難免會有出錯,歡迎大家評論指出,一起進步。

總結

以上是生活随笔為你收集整理的python编程a的x次方_「Python 面试」第四次更新的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。