sphinx python

Python代码可以在其源代码中包含文档。 这样做的默认方式取决于docstrings ,它以三引号格式定义。 尽管文档的价值是有据可查的,但似乎似乎太普遍了,以至于没有足够的文档代码。 让我们来看一个关于强大文档功能的场景。

在进行了太多的白板技术采访,要求您实施斐波那契数列之后,您已经受够了。 您回家并用Python编写了一个可重用的斐波那契计算器,该计算器使用浮点数技巧获得了O(1)。

代码很简单:

# fib.py
import math

_SQRT_5 = math . sqrt ( 5 )
_PHI = ( 1 + _SQRT_5 ) / 2

def approx_fib ( n ) :
return round ( _PHI** ( n+ 1 ) / _SQRT_5 )


(斐波那契数列是四舍五入到最接近的整数的几何序列,这是我最喜欢的鲜为人知的数学事实之一。)

作为一个体面的人,您可以将代码开源,并将其放在PyPI上 。 setup.py文件非常简单:

import setuptools

setuptools. setup (
name = 'fib' ,
version = '2019.1.0' ,
description = 'Fibonacci' ,
py_modules = [ "fib" ] ,
)


但是,没有文档的代码是没有用的。 因此,您可以向函数添加文档字符串。 我最喜欢的文档字符串样式之一是“ Google”样式 。 标记很轻巧,当它位于源代码中时很好。

def approx_fib ( n ) :
"""
Approximate Fibonacci sequence

Args:
n (int): The place in Fibonacci sequence to approximate

Returns:
float: The approximate value in Fibonacci sequence
"""
# ...


但是函数的文档只是成功的一半。 散文文档对于上下文化代码用法很重要。 在这种情况下,背景是令人讨厌的技术采访。

有一个添加更多文档的选项,Pythonic模式是使用通常在docs /目录下添加的rst文件( reStructuredText的缩写)。 因此, docs / index.rst文件最终看起来像这样:

Fibonacci
=========

Are you annoyed at tech interviewers asking you to implement
the Fibonacci sequence?
Do you want to have some fun with them?
A simple
:code:`pip install fib`
is all it takes to tell them to,
um,
fib off.

.. automodule:: fib
:members:


我们完成了,对吗? 我们将文本存储在文件中。 有人应该看看。

使Python文档更漂亮

为了使您的文档看起来更漂亮,您可以利用Sphinx ,它旨在制作漂亮的Python文档。 这三个Sphinx扩展特别有用:

  • sphinx.ext.autodoc :从模块内部获取文档
  • sphinx.ext.napoleon :支持Google样式的文档字符串
  • sphinx.ext.viewcode :将ReStructured Text源与生成的文档打包在一起

为了告诉Sphinx什么以及如何生成,我们在docs / conf.py中配置一个辅助文件:

extensions = [
'sphinx.ext.autodoc' ,
'sphinx.ext.napoleon' ,
'sphinx.ext.viewcode' ,
]
# The name of the entry point, without the ".rst" extension.
# By convention this will be "index"
master_doc = "index"
# This values are all used in the generated documentation.
# Usually, the release and version are the same,
# but sometimes we want to have the release have an "rc" tag.
project = "Fib"
copyright = "2019, Moshe Zadka"
author = "Moshe Zadka"
version = release = "2019.1.0"

该文件使我们可以使用所需的所有元数据发布代码,并注意扩展名(上面的注释说明了如何)。 最后,要确切记录我们希望如何生成文档,请使用Tox来管理虚拟环境,以确保我们顺利生成文档:

[ tox ]
# By default, .tox is the directory.
# Putting it in a non-dot file allows opening the generated
# documentation from file managers or browser open dialogs
# that will sometimes hide dot files.
toxworkdir = { toxinidir } /build/tox

[ testenv:docs ]
# Running sphinx from inside the "docs" directory
# ensures it will not pick up any stray files that might
# get into a virtual environment under the top-level directory
# or other artifacts under build/
changedir = docs
# The only dependency is sphinx
# If we were using extensions packaged separately,
# we would specify them here.
# A better practice is to specify a specific version of sphinx.
deps =
sphinx
# This is the sphinx command to generate HTML.
# In other circumstances, we might want to generate a PDF or an ebook
commands =
sphinx-build -W -b html -d { envtmpdir } /doctrees . { envtmpdir } /html
# We use Python 3.7. Tox sometimes tries to autodetect it based on the name of
# the testenv, but "docs" does not give useful clues so we have to be explicit.
basepython = python3.7


现在,无论何时运行Tox,它都会为您的Python代码生成漂亮的文档。

Python文档非常出色

docstrings ,添加.rst文件,然后添加Sphinx和Tox为用户美化结果。

您对好的文档有何评价? 您还有其他喜欢的战术吗? 在评论中分享他们!

翻译自: https://opensource.com/article/19/11/document-python-sphinx

sphinx python

sphinx python_如何使用Sphinx记录Python代码相关推荐

  1. python代码风格指南_记录Python代码:完整指南

    python代码风格指南 Welcome to your complete guide to documenting Python code. Whether you're documenting a ...

  2. 功能测试代码python_如何使您的Python代码更具功能性

    功能测试代码python Functional programming has been getting more and more popular in recent years. Not only ...

  3. 控制论python_[干货]深入浅出LSTM及其Python代码实现

    人工神经网络在近年来大放异彩,在图像识别.语音识别.自然语言处理与大数据分析领域取得了巨大的成功,而长短期记忆网络LSTM作为一种特殊的神经网络模型,它又有哪些特点呢?作为初学者,如何由浅入深地理解L ...

  4. 哈希算法python_哈希算法(Python代码实现)

    1.常见的数据查找算法: 众所周知,顺序查找是最简单的查找方式,但要将所有数据遍历一遍所以效率相对较低,对大数据量的査找问题显然不行.二分查找的查找效率虽然非常高但是数据必须有序,而对数据排序通常需要 ...

  5. BP神经网络(python代码)

    神经网络是深度学习的基础.个人理解神经网络就是可以拟合任何一种广义线性模型的结构,本文主要记录python代码的学习笔记. BP神经网络原理(待补充,可以详见<数据挖掘概念与技术>P258 ...

  6. python如何读取公共盘的文档_如何使用 Sphinx 给 Python 代码写文档 | Linux 中国

    最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka Python 代码可以在源码中包含文档.这种方式默认依靠 docstring ...

  7. python代码_如何使用 Sphinx 给 Python 代码写文档

    最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka(作者) Python 代码可以在源码中包含文档.这种方式默认依靠 docst ...

  8. 梯度下降的线性回归用python_一元线性回归和梯度下降的python代码实现

    一元线性回归和梯度下降的python代码实现 2020-08-05 23:49 阅读数 9 import numpy as np import matplotlib.pyplot as plt imp ...

  9. 快速傅里叶变换python_快速傅里叶变换及python代码实现

    一.前言 我想认真写好快速傅里叶变换(Fast Fourier Transform,FFT),所以这篇文章会由浅到细,由窄到宽的讲解,但是傅里叶变换对于寻常人并不是很容易理解的,所以对于基础不牢的人我 ...

最新文章

  1. mac使用被动ftp模式(pasv)_网络安全工程师与白帽子黑客教你:Kali Linux之使用Metasploit进行FTP服务扫描实战...
  2. graylog2+syslog-ng+mongodb构建集中管理日志服务器 --转载
  3. 怎么导入sklearn包_在导入sklearn包是报错
  4. linux CentOS6.x 修改主机名(Hostname)
  5. 命令行开启windows下的iis信息服务,开启及配置http端口,开启及配置ftp端口
  6. P6477-[NOI Online #2 提高组]子序列问题【线段树】
  7. VBoxManage: error: Nonexistent host networking interface, name 'vboxnet0' (VERR_INTERNAL_ERROR)
  8. Java 获取文件目录最终的修改时间
  9. 总结的若干关于RecursionError: maximum recursion depth exceeded问题的解决办法
  10. emlog评论ajax,Emlog评论通过QQ获取昵称资料
  11. android 之日期选择器,Android GUI 之日期选择器(DatePicker)
  12. (译)C#/.NET中的委托与事件
  13. C#设计模式之一单例模式(Singleton Pattern)【创建型】
  14. feedback vertex set problem (FVS) 反馈顶点集问题 是什么
  15. VM虚拟机配置动态ip和静态ip访问
  16. 如何在visio中画出矩阵
  17. php怎么安装ecshop,ECSHOP4.0安装教程【ECSHOP4.0安装流程方法】ECSHOP4.0安装步骤-ECSHOP教程网...
  18. 云计算的定义是什么?
  19. DSC曲线峰面积的确定及仪器校正
  20. StatQuest-MachineLearning-Lesson1~5

热门文章

  1. Java虚拟机JVM的内存管理
  2. mysql线上问题之Lock wait timeout exceeded; try restarting transaction
  3. 说说关于JVM三色标记算法
  4. 超详细的Hadoop2配置详解
  5. NG2入门 - 架构
  6. Ubuntu硬盘安装
  7. OC之description
  8. 中国式的APP排行榜
  9. 一切的开始源于网络的虚拟
  10. 算法高级(48)-数据挖掘十大算法简介