自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用Sphinx給Python代碼寫文檔

開發(fā) 后端
Python 代碼可以在源碼中包含文檔。這種方式默認依靠 docstring,它以三引號格式定義。雖然文檔的價值是很大的,但是沒有充足的文檔的代碼還是很常見。讓我們演練一個場景,了解出色的文檔的強大功能。

[[284181]]

最好將文檔作為開發(fā)過程的一部分。Sphinx 加上 Tox,讓文檔可以輕松書寫,并且外觀漂亮。

Python 代碼可以在源碼中包含文檔。這種方式默認依靠 docstring,它以三引號格式定義。雖然文檔的價值是很大的,但是沒有充足的文檔的代碼還是很常見。讓我們演練一個場景,了解出色的文檔的強大功能。

經(jīng)歷了太多在白板技術(shù)面試上要求你實現(xiàn)斐波那契數(shù)列,你已經(jīng)受夠了。你回家用 Python 寫了一個可重用的斐波那契計算器,使用浮點技巧來實現(xiàn) O(1) 復雜度。

代碼很簡單:

  1. # fib.py
  2. import math
  3.  
  4. _SQRT_5 = math.sqrt(5)
  5. _PHI = (1 + _SQRT_5) / 2
  6.  
  7. def approx_fib(n):
  8. return round(_PHI**(n+1) / _SQRT_5)

(該斐波那契數(shù)列是四舍五入到最接近的整數(shù)的幾何序列,這是我最喜歡的鮮為人知的數(shù)學事實之一。)

作為一個好人,你可以將代碼開源,并將它放在 PyPI 上。setup.py 文件很簡單:

  1. import setuptools
  2.  
  3. setuptools.setup(
  4. name='fib',
  5. version='2019.1.0',
  6. description='Fibonacci',
  7. py_modules=["fib"],
  8. )

但是,沒有文檔的代碼是沒有用的。因此,你可以向函數(shù)添加 docstring。我最喜歡的 docstring 樣式之一是 “Google” 樣式。標記很輕量,當它放在源代碼中時很好。

  1. def approx_fib(n):
  2. """
  3. Approximate Fibonacci sequence
  4.  
  5. Args:
  6. n (int): The place in Fibonacci sequence to approximate
  7.  
  8. Returns:
  9. float: The approximate value in Fibonacci sequence
  10. """
  11. # ...

但是函數(shù)的文檔只是成功的一半。普通文檔對于情境化代碼用法很重要。在這種情況下,情景是惱人的技術(shù)面試。

有一種添加更多文檔的方式,專業(yè) Python 人的方式通常是在 docs/ 添加 rst 文件( reStructuredText 的縮寫)。因此 docs/index.rst 文件最終看起來像這樣:

  1. Fibonacci
  2. =========
  3.  
  4. Are you annoyed at tech interviewers asking you to implement
  5. the Fibonacci sequence?
  6. Do you want to have some fun with them?
  7. A simple
  8. :code:`pip install fib`
  9. is all it takes to tell them to,
  10. um,
  11. fib off.
  12.  
  13. .. automodule:: fib
  14. :members:

我們完成了,對吧?我們已經(jīng)將文本放在了文件中。人們應該會看的。

使 Python 文檔更漂亮

為了使你的文檔看起來更漂亮,你可以利用 Sphinx,它旨在制作漂亮的 Python 文檔。這三個 Sphinx 擴展特別有用:

  • sphinx.ext.autodoc:從模塊內(nèi)部獲取文檔
  • sphinx.ext.napoleon:支持 Google 樣式的 docstring
  • sphinx.ext.viewcode:將 ReStructured Text 源碼與生成的文檔打包在一起

為了告訴 Sphinx 該生成什么以及如何生成,我們在 docs/conf.py 中配置一個輔助文件:

  1. extensions = [
  2. 'sphinx.ext.autodoc',
  3. 'sphinx.ext.napoleon',
  4. 'sphinx.ext.viewcode',
  5. ]
  6. # 該入口點的名稱,沒有 .rst 擴展名。
  7. # 慣例該名稱是 index
  8. master_doc = "index"
  9. # 這些值全部用在生成的文檔當中。
  10. # 通常,發(fā)布(release)與版本(version)是一樣的,
  11. # 但是有時候我們會有帶有 rc 標簽的發(fā)布。
  12. project = "Fib"
  13. copyright = "2019, Moshe Zadka"
  14. author = "Moshe Zadka"
  15. version = release = "2019.1.0"

此文件使我們可以使用所需的所有元數(shù)據(jù)來發(fā)布代碼,并注意擴展名(上面的注釋說明了方式)。最后,要確保生成我們想要的文檔,請使用 Tox 管理虛擬環(huán)境以確保我們順利生成文檔:

  1. [tox]
  2. # 默認情況下,`.tox` 是該目錄。
  3. # 將其放在非點文件中可以從
  4. # 文件管理器或瀏覽器的
  5. # 打開對話框中打開生成的文檔,
  6. # 這些對話框有時會隱藏點文件。
  7. toxworkdir = {toxinidir}/build/tox
  8.  
  9. [testenv:docs]
  10. # `docs` 目錄內(nèi)運行 `sphinx`
  11. # 以確保它不會拾取任何可能進入頂層目錄下的
  12. # 虛擬環(huán)境或 `build/` 目錄下的其他工件的雜散文件。
  13. changedir = docs
  14. # 唯一的依賴關(guān)系是 `sphinx`。
  15. # 如果我們使用的是單獨打包的擴展程序,
  16. # 我們將在此處指定它們。
  17. # 更好的做法是指定特定版本的 sphinx
  18. deps =
  19. sphinx
  20. # 這是用于生成 HTML `sphinx` 命令。
  21. # 在其他情況下,我們可能想生成 PDF 或電子書。
  22. commands =
  23. sphinx-build -W -b html -d {envtmpdir}/doctrees . {envtmpdir}/html
  24. # 我們使用 Python 3.7。
  25. # Tox 有時會根據(jù) testenv 的名稱嘗試自動檢測它,
  26. # 但是 `docs` 沒有給出有用的線索,因此我們必須明確它。
  27. basepython = python3.7

現(xiàn)在,無論何時運行 Tox,它都會為你的 Python 代碼生成漂亮的文檔。

在 Python 中寫文檔很好

作為 Python 開發(fā)人員,我們可以使用的工具鏈很棒。我們可以從 docstring 開始,添加 .rst 文件,然后添加 Sphinx 和 Tox 來為用戶美化結(jié)果。 

責任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2024-01-01 13:27:44

pydoc工具代碼

2012-07-10 01:34:27

代碼優(yōu)化代碼程序員

2011-05-25 17:17:54

前端開發(fā)

2012-02-08 16:19:09

ibmdw

2012-02-14 12:50:13

ibmdw

2021-09-08 08:34:37

Go 文檔Goland

2022-09-08 09:39:03

PythonOCR代碼

2022-08-03 11:24:10

WindowsPython代碼

2022-12-12 12:04:59

ChatGPT代碼軟件

2011-03-04 10:47:06

Nagios監(jiān)控Sphinx

2015-11-19 16:22:58

產(chǎn)品經(jīng)理需求文檔

2023-02-26 10:16:19

JavaPDF文檔

2020-09-23 17:16:52

Python技術(shù)工具

2015-02-28 09:35:01

iOSpython

2021-04-25 15:17:29

代碼軟件程序員

2023-03-10 13:38:00

Python文檔掃描器

2020-01-14 15:03:27

Python代碼編程語言

2010-06-10 10:32:35

openSUSE使用教

2020-02-19 13:11:52

阿里 AI 代碼

2018-12-19 17:20:17

點贊
收藏

51CTO技術(shù)棧公眾號