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

歡迎訪問 生活随笔!

生活随笔

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

python

python语言面试基础_【python面试指北】1.语言基础

發布時間:2025/4/5 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python语言面试基础_【python面试指北】1.语言基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. python是動態強類型的語言。

動態還是靜態指的是編譯器還是運行期確定類型

強類型指的是不會發生隱式類型轉換。比如js能夠執行1+"1",但是python不行,所以python是弱類型的語言。

2. 鴨子類型

當一只鳥走起來像鴨子、游泳起來像鴨子、叫氣力啊也像鴨子,那么這只鳥就可以被稱為鴨子。

鴨子類型關注的是對象的行為,而不是類型。比如file,StringIO,socket對象都支持read/write方法,再比如定義了iter魔術方法的對象可以用for迭代。

3. monkey patch

所謂的monkey patch就是運行時替換。

4. 自省

運行時判斷一個對象類型的能力。

python一切皆對象,用type, id, isinstance獲取對象類型信息。

5. 列表和字典推導

如 [i for i in range(10) if i % 2 == 0],如果[]改為(),則為生成器

6. python2和python3

print成為函數

編碼問題。python3不再有unicode對象,默認str就是unicode

除法變化。python3除號返回浮點數,如果要返回整數,應使用//

類型注解。幫助IDE實現類型檢查

優化的super()方便直接調用父類函數

高級解包操作。a, b, *rest = range(10)

keyword only arguments。限定關鍵字參數

chained exceptions。python3重新拋出異常不會丟失棧信息

一切返回迭代器。range, zip, map, dict.values, etc. are all iterators

性能優化等。。。

7. python如何傳遞參數

python既不是值傳遞也不是引用傳遞,唯一支持的參數傳遞是共享傳參。

call by object(call by object reference or call by sharing)

call by sharing(共享傳參),函數形參獲得實參中各個引用的副本。

變量一切都是對象。list是可變對象,string是不可變對象

總結一下:根據對象的引用來傳遞,根據對象是可變對象還是不可變對象,得到兩種不同的結果。如果是可變對象,則直接修改。如果是不可變對象,則生產新對象,讓形參指向新對象

8. python可變/不可變對象

不可變對象: bool/int/float/tuple/str/frozenset

可變對象:list/set/dict

練習題:

# 1

def clear_list(l)

l = []

ll = [1,2,3]

clear_list(ll)

print(lll)

# 2

def fl(l=[1]):

l.append(1)

print(l)

fl()

fl()

# 記住:默認參數只計算一次

**9. *args, kwargs

用來處理可變參數,args被打包成tuple,kwargs被打包成dict

傳遞方式有兩種

# 第一種

foo(1,2,3)

foo(a=1,b=2)

# 第二種

foo(*[1,2,3])

foo(**dict(a=1,b=2)})

10. python異常機制

BaseException

下面有SystemExit/KeyboardInterrupt/GeneratorExit/Exception(其他異常都屬于它)

try:

# func # 可能會拋出異常的代碼

except (Exception1, Exception2) as e: # 可以捕獲多個異常并處理

# 異常處理的代碼

else:

# pass # 異常沒有發生的時候代碼邏輯

finally:

pass # 無論異常有沒有發生都會執行的代碼,一般處理資源的關閉和釋放

11. 自定義異常

繼承Exception實現自定義異常,給異常加上一些附加信息

不用baseException是因為這樣的話ctrl+c的keybord異常就用不了了

12. python性能分析與優化,GIL

cpython解釋器的內存管理并不是線程安全的

保護多線程情況下對python對象的訪問

cpython使用簡單的鎖機制避免多個線程同時執行字節碼

GIL的影響

限制了程序的多核執行

同一個時間只能有一個線程執行字節碼

CPU密集程序難以利用多核優勢

IO期間會釋放GIL,對IP密集程序影響不大

對IO密集程序影響不大

如何規避GIL的影響

區分CPI和IO密集程序

CPU密集可以使用多進程+進程池

IO密集使用多線程/協程

cpython擴展

13. 服務端性能優化措施

web應用一般語言不會成為瓶頸

數據結構與算法優化

數據庫層:索引優化,慢查詢消除,批量操作減少IO,NoSQL

網絡IO:批量操作,pipeline操作,減少IO

緩存:使用內存數據庫 redis/memcached

異步:asyncio,celery

并發:gevent/多線程

14. python生成器與協程

Generator

生成器就是可以生成值的函數

當一個函數里有了yield關鍵字就成了生成器

生成器可以掛起執行并且保持當前執行的狀態

協程不懂

15. python3原生協程

async/await支持原生協程

16. python單元測試

三無代碼不可取(無穩定、無注釋、無單測)

保證的代碼邏輯的正確性

單側影響設計,易測的代碼往往是高內聚低耦合的

回歸測試,防止改一處整個服務不可用

單元測試相關的庫

nose/pytest較為常用

mock模塊用來模擬替換網絡請求等

coverage統計測試覆蓋率

17. python深拷貝與淺拷貝

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的python语言面试基础_【python面试指北】1.语言基础的全部內容,希望文章能夠幫你解決所遇到的問題。

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