python面試題總結(2)--編碼規范

1. 什么是 PEP8?

答:PEP8 --《Python Enhancement Proposal #8》(8 號 Python 增強提案),他針對的 Python 代碼格式而編訂的風格指南。

2. 了解 Python 之禪么?

答:通過 import this 語句可以獲取其具體的內容。它告訴大家如何寫出高效整潔的代碼。例如:

避復就簡
Simple is better than complex.

避隱就顯
Explicit is better than implicit.

能不嵌套就不嵌套
Flat is better than nested.

3. 了解 DocStrings 么?

答:

1)DocStrings 文檔字符串是一個重要工具,主要是解釋代碼作用的,幫助你的程序文檔更加簡單易懂。
2)我們可以在函數體的第一行使用一對三個單引號 ‘’’ 或者一對三個雙引號 “”" 來定義文檔字符串。
3)可以使用 doc(注意雙下劃線)調用函數中的文檔字符串屬性。

def function():''' say something here!'''pass
print (function.__doc__) # 調用 doc

輸出結果為:

 say something here!

4. 了解類型注解么?

答:
Python是動態語言,變量隨時可以被賦值,且能賦值為不同的類型
Python不是靜態編譯型語言,變量類型是在運行器決定的
動態語言很靈活,但是這種特性也是弊端

    def add(x, y):return x + yprint(add(4, 5))print(add('hello', 'world'))add(4, 'hello')   

難發現:由于不做任何類型檢查,直到運行期問題才顯現出來,或者線上運行時才能暴露出問題
難使用:函數的使用者看到函數的時候,并不知道你的函數的設計,并不知道應該傳入什么類型的數據

函數注解

  • Python 3.5 引入
  • 對函數的參數進行類型注解
  • 對函數的返回值進行類型注解
  • 只對函數參數做一個輔助的說明,并不對函數參數進行類型檢查
  • 提供給第三方工具,做代碼分析,發現隱藏的bug
  • 函數注解的信息,保存在__annotations__屬性中
def add(x:int , y:int) -> int:''':param x::param y::return:'''return x + y
print(help(add))
print(add.__annotations__)

運行結果

add(x:int, y:int) -> int:param x::param y::return:
None
{'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}

變量注解

Python 3.6引入。它也只是一種對變量的說明,非強制

i:int = 3

5. 例舉你知道 Python 對象的命名規范,例如方法或者類等

答:

:總是使用首字母大寫單詞串,如 MyClass。

內部類:可以使用額外的前導下劃線。

變量:小寫,由下劃線連接各個單詞。方法名類似

常量:常量名所有字母大寫 等

函數&方法:函數名應該為小寫,可以用下劃線風格單詞以增加可讀性,如:myfunction, my_example_function。(混合大小寫僅被允許用于這種風格已經占據優勢的時候,以便保持向后兼容。)

函數和方法的參數:總使用“self”作為實例方法的第一個參數。總使用“cls”作為類方法的第一個參數。
如果一個函數的參數名稱和保留的關鍵字沖突,通常使用一個后綴下劃線好于使用縮寫或奇怪的拼寫。

詳情見:python命名規范

6. Python 中的注釋有幾種?

答:總體來說分為兩種,單行注釋和多行注釋。

單行注釋在行首是 #。
多行注釋可以使用三個單引號或三個雙引號,包括要注釋的內容。

7. 如何優雅的給一個函數加注釋?

答:可以使用 docstring 配合類型注解

8. 如何給變量加注釋?

答:可以通過變量名:類型的方式如下

a: str = "this is string type"

9. Python 代碼縮進中是否支持 Tab 鍵和空格混用。

答:不允許 tab 鍵和空格鍵混用,這種現象在使用 sublime 的時候尤為明顯。

一般推薦使用 4 個空格替代 tab 鍵。

10. 是否可以在一句 import 中導入多個庫?

答:可以是可以,但是不推薦。因為一次導入多個模塊可讀性不是很好,所以一行導入一個模塊會比較好。同樣的盡量少用 from modulename import *,因為判斷某個函數或者屬性的來源有些困難,不方便調試,可讀性也降低了。

11. 在給 Py 文件命名的時候需要注意什么?

答:
給文件命名的時候不要和標準庫中的一些模塊重復,比如 abc。
另外要名字要有意義,不建議數字開頭或者中文命名。

12. 例舉幾個規范 Python 代碼風格的工具

答:

自動檢測工具Pylint:一個檢查違反 PEP8 規范和常見錯誤的庫,它會自動查找不符合代碼風格標準和有潛在問題的代碼,并在控制臺輸出代碼中違反規范和出現問題的相關信息。

自動優化工具Black:在眾多代碼格式化工具中,Black算是比較新的一個,它最大的特點是可配置項比較少,個人認為這對于新手來說是件好事,因為我們不必過多考慮如何設置Black,讓 Black 自己做決定就好。
在使用方面,black默認讀取指定python文件并對其進行代碼規范格式化,然后輸出到原文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452858.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452858.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452858.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Unity熱更新】學會AssetsBundle打包、加載、卸載

本教程詳細講解什么是AssetBundle壓縮包機制!然后構建 AssetBundle、加載 AssetBundle 以及卸載 AssetBundle 的簡要教程。這一個流程就是熱更新! AssetBundles 簡介 1.什么是AssetBundles? AssetBundles是Unity中一種用于打包和存儲資源(如模型、紋理、聲音等)的文件格…

Confluence 6 訪問你的宏正文(body)

請查看 Writing User Macros 頁面獲得有關如何寫用戶宏的介紹。 這個頁面介紹你可以在用戶宏中可以使用的的代碼信息。 訪問你的宏正文&#xff08;body&#xff09; 在你用戶宏模板中的 $body 對象可以訪問訪問到傳遞到你宏正文中的內容。 當你的宏有指定的正文的時候&#xf…

hibernate主鍵生成策略

1、hibernate 要求實體類里面有一個屬性作為唯一值&#xff0c;對應的表字段是主鍵&#xff0c;主鍵可以不同的生成策略 2、hibernate 主鍵生成策略有很多的值 <generator class"native"></generator> 3、在class屬性里面有很多值 &#xff08;1&#xf…

jboss mysql cluster_jboss配置mysql數據庫連接池

jboss配置mysql數據庫連接池下面YJBYS小編為大家整理了關于jboss配置mysql數據庫連接池的文章&#xff0c;希望對你有所幫助。更多Java認證考試信息&#xff0c;盡在應屆畢業生培訓網!1&#xff1a;配置&#xff1a;JDK 1.5JBoss4.0.4Mysql5.0Myeclipse 4.12&#xff1a;建立數…

P2P-挑戰和機遇

近年來互聯網上對等連接P2P應用發展迅速&#xff0c;MP3和視頻文件共享下載的P2P流已經成為寬帶用戶流量的主體。基于P2P的即時通信和互聯網電話&#xff08;如Skype&#xff09;發展迅速&#xff0c;對等廣播P2P流媒體等正在興起。P2P協同計算和網格方興未艾。P2P 應用支持網絡…

python面試題總結(3)-- 數據類型(字符串)

1. 列舉 Python 中的基本數據類型&#xff1f; 答&#xff1a; Python3 中有六個標準的數據類型&#xff1a;數字&#xff08;Number&#xff09;、字符串&#xff08;String&#xff09;、列表&#xff08;List&#xff09;、元組&#xff08;Tuple&#xff09;、集合&#…

網頁中JS函數自動執行常用三種方法

&#xff08;1&#xff09;最簡單的調用方式&#xff0c;直接寫到html的body標簽里面&#xff1a; <body οnlοad"myFunction()"></body> <script type"text/javascript"> function myFunction(){ …

Jetty - Container源碼分析

1. 描述 Container提供管理bean的能力。 基于Jetty-9.4.8.v20171121。 1.1 API public interface Container {// 增加一個bean&#xff0c;如果bean是一個Container.Listener則隱含調用addEventListener(Container.Listener)方法// Container.Listener只關心兩個事件&#xff1…

Ubuntu中安裝FastDFS

1 安裝fastdfs依賴包 解壓縮libfastcommon-master.zip進入到libfastcommon-master的目錄中執行 ./make.sh執行 sudo ./make.sh install 2 安裝fastdfs 解壓縮fastdfs-master.zip進入到 fastdfs-master目錄中執行 ./make.sh執行 sudo ./make.sh install 3 配置跟蹤服務器tra…

python基本語句及其意思_Python語法基礎(1),一

一、Python的對象模型對象是Python語言中最基本的概率&#xff0c;在Python中處理的一切都是對象。Python中許多內置對象可提供編程者使用&#xff0c;內置對象可直接使用&#xff0c;如數字、字符串、列表 、del等&#xff1b;非內置對象需要導入模塊才能使用&#xff0c;如正…

什么是隧道技術

隧道技術是一種通過互聯網絡基礎設施在網絡之間傳遞數據的方式。使用隧道傳遞的數據可以是不同協議的數據幀或包&#xff0c;隧道協議將這些其它協議的數據幀或包重新封裝在新的包頭中發送&#xff0c;被封裝的數據包在隧道的兩個端點之間通過公共互聯網絡進行路由&#xff0c;…

詳解網絡數字電視的實現方法與關鍵技術

1、IPTV的實現方法 寬帶網絡數字電視&#xff0c;又稱IPTV或BTV&#xff0c;即交互式網絡電視&#xff0c;是一種利用寬帶互聯網、多媒體等多種技術于一體&#xff0c;向家庭用戶提供包括數字電視在內的多種交互式服務的嶄新技術。它能夠很好地適應當今網絡飛速發展的趨勢&…

有狀態的bean和無狀態的bean的區別

有狀態會話bean &#xff1a;每個用戶有自己特有的一個實例&#xff0c;在用戶的生存期內&#xff0c;bean保持了用戶的信息&#xff0c;即“有狀態”&#xff1b;一旦用戶滅亡&#xff08;調用結束或實例結束&#xff09;&#xff0c;bean的生命期也告結束。即每個用戶最初都會…

因為我想在博客園長呆,所以給博客園提一些改進建議

一晃眼我來博客園已經有4個月了&#xff0c;我的排名從9萬多上升到9千多&#xff0c;也有不少朋友關注了我&#xff0c;其實對我幫助更大的是博客園的管理團隊&#xff0c;他們對我的文章提出了很多很好的改進建議&#xff0c;從而讓我的文章水平有了很大的提升。 這里我從用戶…

double 二進制 java_C#中將double值變成二進制然后寫入文件,Java中載入該文件讀取此二進制double值時不正確...

目前已定位到是因為C#中的byte范圍是0到255&#xff0c;而java中byte值為-128到127導致的錯誤。嘗試過使用C#的sbyte來解決&#xff1a;bw1 new BinaryWriter(new FileStream("C:\\Users\\DELL\\Desktop\\SpatialIndex\\ctest1.bin", FileMode.Create));bw2 new Bi…

什么是移動IP

移動代理 &#xff08;Mobility Agent&#xff09;&#xff1a;又分為歸屬代理和外區代理兩類。歸屬代理是歸屬網上的移動代理&#xff0c;它至少有一個接口在歸屬網上。其責任是當移動節點移動到外區網時&#xff0c;截收發往該點的數據包&#xff0c;并使用隧道技術將這些數據…

Ubuntu中安裝nginxError

問題1&#xff1a;出現如下錯誤&#xff1a; ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCR…

項目經理如何把工作簡單化

做一件事有兩種方式。其一是把簡單的事情復雜化&#xff0c;另外就是把復雜的事情簡單化。項目經理應該如何選擇呢?恐怕大家會異口同聲的說&#xff0c;當然是把復雜的事情簡單化。但是&#xff0c;在實際工作中&#xff0c;很少有項目經理能夠做到這一點。他們會不知不覺中把…

[luogu P2590 ZJOI2008] 樹的統計 (樹鏈剖分)

題目描述 一棵樹上有n個節點&#xff0c;編號分別為1到n&#xff0c;每個節點都有一個權值w。 我們將以下面的形式來要求你對這棵樹完成一些操作&#xff1a; I. CHANGE u t : 把結點u的權值改為t II. QMAX u v: 詢問從點u到點v的路徑上的節點的最大權值 III. QSUM u v: 詢問從…