天天看點

Python面試題之編碼規範閱讀源什麼是 PEP8什麼是 Python 之禅什麼是文檔字元串函數注解Python 命名規範Python 注釋有幾種如何優雅地給一個函數加注釋如何優雅地給一個類加注釋Python 代碼縮進中是否支援 Tab 和空格混用是否可以在一句 import 中導入多個庫給 Python 檔案命名時需要注意什麼列舉幾個規範 Python 代碼風格的工具

目錄

  • 閱讀源
  • 什麼是 PEP8
  • 什麼是 Python 之禅
  • 什麼是文檔字元串
  • 函數注解
  • Python 命名規範
  • Python 注釋有幾種
  • 如何優雅地給一個函數加注釋
  • 如何優雅地給一個類加注釋
  • Python 代碼縮進中是否支援 Tab 和空格混用
  • 是否可以在一句 import 中導入多個庫
  • 給 Python 檔案命名時需要注意什麼
  • 列舉幾個規範 Python 代碼風格的工具

閱讀源

python-面試通關寶典

什麼是 PEP8

PEP是 Python Enhancement Proposal 的縮寫,翻譯過來就是 Python增強建議書
簡單說就是一種編碼規範,是為了讓代碼“更好看”,更容易被閱讀
具體可參考:
https://www.python.org/dev/peps/pep-0008/
           

什麼是 Python 之禅

import this
           

什麼是文檔字元串

Python有一個很奇妙的特性,稱為 文檔字元串 ,它通常被簡稱為 docstrings 。DocStrings是一個重要的工具,由于它幫助你的程式文檔更加簡單易懂,你應該盡量使用它。你甚至可以在程式運作的時候,從函數恢複文檔字元串。
使用魔法方法'__doc__'可以列印docstring的内容
           

函數注解

def add(x:int, y:int) -> int:
    return x + y
用 : 類型 的形式指定函數的參數類型,用 -> 類型 的形式指定函數的傳回值類型
           

Python 命名規範

命名規範:
1. 變量名隻能是字母、數字和下劃線的任意組合;
2. 變量名隻能以字母或下劃線開頭;
3. 變量名禁止使用關鍵字
4. 變量名區分大小寫

命名風格:
風格一:駝峰體(大駝峰式)
	類

風格二:下劃線
	普通變量、全局變量

命名約定:
1. 變量名不要使用中文和拼音(為了國際化)
2. 變量名要有意義
	(1) 清單:xxx_list / xxx_ls
	(2) 元組:xxx_tuple / xxx_tp
	(3) 字元串:xxx_str / xxx_s1 / xxx_s2
	(4) 單個字元:xxx_ch
	(5) 字典:xxx_dict / xxx_dc
	(6) 集合:xxx_set
	(7) x、y、z:用來表示浮點型
	(8) 除了(7)以外的字元,都表示整數,尤其是i、j、k、m、n
3. 盡量避免單字元名稱,用于計數器和疊代器除外
4. 普通變量用小寫字母,單詞之間用 _分隔
5. 全局變量全用大寫字母,單詞之間用 _分隔
6. 關于變量的“Internal”和“Public”
	Internal(以_或者__及以上開頭的變量)表示僅子產品内使用或者在類中是保護或私有的
	Public,非Internal變量

	Type			Public				Internal
	子產品			lower_with_under		_lower_with_under
	包			lower_with_under		
	類			CapWords(大駝峰式)   _CapWords
	異常類              CapWords
	函數  		lower_with_under()	        _lower_with_under()
	全局/類常量     CAPS_WITH_UNDER 	_CAPS_WITH_UNDER
	全局/類變量     lower_with_under		_lower_with_under
	執行個體變量          lower_with_under            _lower_with_under (protected) or 
	                                                                __lower_with_under (private)
	方法                 lower_with_under            _lower_with_under (protected) or
	                                                                __lower_with_under (private)
	函數/方法參數  lower_with_under
	局部變量          lower_with_under

關于下劃線的命名約定
1. 單領先下劃線		
例如:
	_var	
含義:		
	訓示變量供内部使用。通常不由Python解釋器強制執行(通配符導入除外)僅作為程式員的提示

2. 單尾拖尾下劃線
例如:
	var_
含義:
	避免與Python的關鍵字命名沖突

3. 雙重領先下劃線
例如:
	__var
含義:
	訓示變量在類的上下文中是私有的。由Python解釋器強制執行(觸發名稱修改)

4. 雙重領先和尾随下劃線
例如:
	__var__
含義:
	表示Python語言定義的特殊方法。避免這種命名方案為自己的屬性

5. 單下劃線
例如:
	_
含義:
	用作臨時或者無意義變量的名稱(不關心)
           

Python 注釋有幾種

單行注釋,多行注釋,docstring注釋
           

如何優雅地給一個函數加注釋

"""這一行:函數(函數、方法、生成器)是做什麼的(函數的作用)概述

這一行:對函數詳細的描述

Args: / :params 參數名字: (__表示兩個空格,節的内容都應該縮進2個空格)
__參數名字: 類型,含義(含義,如果>80 chars,則使用2或4個空格懸挂縮進)
__*args: 描述args
__*kwargs: 描述kwargs

Returns: / Yields:
__類型,含義,還可以舉例(如果傳回為None,可以省略)

Raises:
__IOError: An error occurred accessing the bigtable.Table object.
"""
           

如何優雅地給一個類加注釋

"""這一行:類是做什麼的(類的作用)概述

這一行:對類詳細的描述

Attributes: (如果類包含公共屬性的話,文檔字元串需要書寫一個Attributes段)
__sports: 類型,含義
__computers: 類型,含義
"""
           

Python 代碼縮進中是否支援 Tab 和空格混用

支援,Python 并沒有強制要求你用Tab或者用空格縮進,
但根據 PEP8 規範,不要使用Tab來縮進,也更不要Tab和空格混用,
推薦4個半角空格。
           

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

可以的
import json,random,requests
但根據 PEP8 ,導入應該獨占一行
           

給 Python 檔案命名時需要注意什麼

全小寫,單詞之間使用下劃線分隔
           

列舉幾個規範 Python 代碼風格的工具

pylint,black,pycharm也帶有pep8的代碼規範工具