總結(2)--- 小知識點總結(基礎知識、網絡編程知識)

基礎知識python

 

Python 基礎(小知識點總結)linux

一、Python中是如何實現list和tuple之間的轉換的web

  可使用內置函數直接轉換正則表達式

  list ---> tuple    tuple(list)算法

  tuple ---> list    list(tuple)數據庫

 

二、Python 中pass語句的做用編程

  pass 語句不就執行任何操做,通常做爲佔位符或者建立站位程序數組

 

三、input()函數的理解瀏覽器

  在Python3中, input()獲取用戶輸入,不論用戶輸入的是什麼,獲取到的都是字符串緩存

  在Python2中,raw_input() 和input(), raw_put() 和Python3 中的input()做用是同樣的,input()輸入的是什麼類型的,獲取到的就是什麼類型的

 

四、寫出一段Python代碼實現刪除一個list裏面的重複元素

  方法一  使用map的fromkeys來自動過濾重複值

  

a = [1,2,3,4,2,1,4,5,6]
b = {}
b = b.fromkeys(a)
print(b)
# 輸出{1: None, 2: None, 3: None, 4:None,5: None, 6: None}

a = list(b.keys())
print(a)
# 輸出 [1,2,3,4,5,6]

 

  方法二 利用set(),set定義是定義集合的,無序,不重複。

a = [1,2,4,2,4,4,5,2]
# set是非重複的,無序集合。 能夠用set先進行去重 ,list()轉化成列表,a.sort來排序

a = list(set(a))

print(a)
# 輸出 [1,2,4,5]

 

五、在linux中find 和 grep 的區別

  linux 系統中grep命令是一個強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來

  grep全程是Global Regular Expression Print ,表示全局正則表達式版本,它 使用權限是全部用戶

而linux下的find 

  功能:在目錄結構中搜索文件,並執行指定的操做。此命令提供了至關多的查找條件,功能很強大

  語法:find起始實目錄 尋找條件 操做

  說明:find 命令從之低昂的起始目錄開始,遞歸地搜索其各個子目錄,查找知足尋找條件的文件並對之採起想換的操做

 

簡單的說, grep是查找匹配條件的行,find是搜索匹配條件的文件。

 

六、re模塊中的search() 和 match()的區別

  match()函數值檢測RE是否是在string的開始位置匹配

  search()會掃描整個string查找匹配

  也就是說match() 只有在0 位置匹配成功的話纔有返回

  若是不是開始位置匹配成功的話,match()就返回none

 

七、什麼是lambda函數,有什麼好處

  lambda 函數是一個能夠接受任意多個參數而且返回單個表達式值的函數

  一、lambda 函數比較輕便,很適合須要完成一項功能,可是此功能只在此一處使用,連名字都很隨意的狀況下

  二、匿名函數,通常用來給filter,map這樣的函數式編程服務

  三、做爲回調函數,傳遞給某些應該,好比消息處理

 

八、Python的參數傳遞是值傳遞仍是引用傳遞

  Python的參數傳遞有:位置參數、默認參數、可變參數、關鍵字參數

  函數的傳值究竟是值傳遞仍是引用傳遞,要分狀況:

不可變參數用值傳遞

  像整數和字符串這樣的不可變對象,是經過拷貝進行傳遞的,由於你不管如何都不可能在原處改變對象

可變參數是引用傳遞

  好比像列表,字典這樣的對象是經過引用傳遞、和c語言裏的用指針傳遞數組很類似,可變對象能在函數內部改變

 

九、面向對象的理解

  面向對象是至關於面向過程而言的。面向過程語言是一種基於功能分析的、以算法爲中心的程序設計方法,而面向對象是一種基於結構分析的、以數據爲中心的程序設計思想,在面嚮對象語言中有一個很重要的概念,叫作類

  面向對象有三大特徵:封裝、繼承、多態

 

十、交換倆個變量的值

  a, b = b, a

 

十一、函數裝飾器有什麼做用,並舉出實例

裝飾器本質上是一個Python函數,它能夠在讓其餘函數在不須要作任何代碼的變更的前提下增長額外的的功能。

裝飾器的返回值也是一個函數的對象,它常常用於有其切面需求的場景

好比:插入日誌、性能測試、事務處理、緩存、權限的校驗等場景

有了裝飾器就能夠抽離大量的與函數功能自己無關的雷同代碼併發並繼續使用

 

十二、迭代器和生成器函數的區別

  • 迭代器是一個更抽象的概念對象,任何對象,若是它的類有next方法和iter方法返回本身自己,對於string、list、dict、tuple、等這類容器對象,使用for循環遍歷是很方便的。 在後臺for語句對容器對象調用iter()函數,iter()是Python的內置函數。iter()會返回一個定義了next()方法的迭代器對象,它在容器中逐個訪問容器內元素,next()也是Python的內置函數。賊沒有後續元素時,next(0會拋出一個Stoplteration異常
  • 生成器(Generator)是建立迭代器的簡單而強大的工具。他們寫起來就想是正規的函數,只是在須要返回數據的時候使用yield語句。每次next()被調用時,生成器會返回它脫離的位置
  • 區別:生成器能作到迭代器能作的全部事情,並且由於自動建立了iter()和next()方法,生成器顯得特別簡潔,而生成器也是高效的,使用生成器表達式取代列表解析能夠同時節省內存。除了建立和保存程序狀態的自動方法,當發生終結時,還會自動拋出異常

1三、Python中閉包的理解

 在函數內部再定義函數,而且這個函數用到了外邊函數的變量,那麼將這個函數以及用到的一些變量稱之閉包。返回的是內部函數的引用

 


 

 

網絡編程相關知識

 

1簡述TCP和UDP的區別以及優缺點

  UDP是面向無鏈接的通信協議,UDP數據包括目的端口號和源端口號信息

    優勢:UDP速度快、操做簡單、要求系統資源較少,因爲通信不須要鏈接,能夠實現廣播發送

    缺點:UDP傳送數據前並不與對方創建鏈接,對接收到的數據也不發送確認信號,發送端不知道數據是否正確接收,也不重複發送,不可靠

 

  TCP是面向鏈接的通信協議,經過三次握手創建鏈接,通信完成是四次揮手

    優勢: TCP在數據傳遞時,有確認、窗口、重傳、阻塞等控制機制,能保證數據正確性,較爲可靠。

    缺點: TCP相對UDP速度慢一點,要求系統資源較多

 

2簡述瀏覽器經過WSGI請求動態資源的過程

 

  • 發送HTTP請求動態資源給web服務器
  • web服務器收到請求後經過WSGI調用一個屬性給應用程序框架
  • 應用程序框架經過引用WSGI調用web服務器的方法 ,設置返回狀態和返回頭信息
  • 調用後返回,此時web服務器保存剛剛設置的信息
  • 應用程序查詢數據庫,生成動態頁面的body的信息
  • 把生成的body信息返回給web服務器
  • web服務器把數據返回給瀏覽器

 

3描述用瀏覽器訪問www.baidu.com的過程

先要解析出baidu.com對應的IP地址

  • 要先是使用arp獲取默認網關的mac地址
  • 組織數據發送給默認網關(IP仍是dns服務器的IP,可是mac地址是默認網關的mac地址)
  • 默認網關擁有轉發數據的能力,把數據妝發給路由器
  • 路由器根據本身的路由協議,來選擇一個合適的較快的路徑轉發數據給目的網關
  • 目的網關(dns服務器所在的網關),吧數據轉發給dns服務器
  • dns服務器查詢解析出baidu.com對應IP地址,並原路返回請求這個域名的client

獲得了baidu.com對應的IP地址以後,會發送TCP的3次握手,進行鏈接

  • 使用HTTP協議發送請求數據給web服務器
  • web服務器接受請求以後,經過查詢本身的服務器獲得相應的結果,原路返回給瀏覽器
  • 瀏覽器接受到數據以後經過瀏覽器本身的渲染功能來顯示這個網頁
  • 瀏覽器關閉tcp鏈接,即4次揮手結束,完成整個訪問過程
相關文章
相關標籤/搜索