sphinx python_如何使用Sphinx记录Python代码
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代码相关推荐
- python代码风格指南_记录Python代码:完整指南
python代码风格指南 Welcome to your complete guide to documenting Python code. Whether you're documenting a ...
- 功能测试代码python_如何使您的Python代码更具功能性
功能测试代码python Functional programming has been getting more and more popular in recent years. Not only ...
- 控制论python_[干货]深入浅出LSTM及其Python代码实现
人工神经网络在近年来大放异彩,在图像识别.语音识别.自然语言处理与大数据分析领域取得了巨大的成功,而长短期记忆网络LSTM作为一种特殊的神经网络模型,它又有哪些特点呢?作为初学者,如何由浅入深地理解L ...
- 哈希算法python_哈希算法(Python代码实现)
1.常见的数据查找算法: 众所周知,顺序查找是最简单的查找方式,但要将所有数据遍历一遍所以效率相对较低,对大数据量的査找问题显然不行.二分查找的查找效率虽然非常高但是数据必须有序,而对数据排序通常需要 ...
- BP神经网络(python代码)
神经网络是深度学习的基础.个人理解神经网络就是可以拟合任何一种广义线性模型的结构,本文主要记录python代码的学习笔记. BP神经网络原理(待补充,可以详见<数据挖掘概念与技术>P258 ...
- python如何读取公共盘的文档_如何使用 Sphinx 给 Python 代码写文档 | Linux 中国
最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka Python 代码可以在源码中包含文档.这种方式默认依靠 docstring ...
- python代码_如何使用 Sphinx 给 Python 代码写文档
最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka(作者) Python 代码可以在源码中包含文档.这种方式默认依靠 docst ...
- 梯度下降的线性回归用python_一元线性回归和梯度下降的python代码实现
一元线性回归和梯度下降的python代码实现 2020-08-05 23:49 阅读数 9 import numpy as np import matplotlib.pyplot as plt imp ...
- 快速傅里叶变换python_快速傅里叶变换及python代码实现
一.前言 我想认真写好快速傅里叶变换(Fast Fourier Transform,FFT),所以这篇文章会由浅到细,由窄到宽的讲解,但是傅里叶变换对于寻常人并不是很容易理解的,所以对于基础不牢的人我 ...
最新文章
- mac使用被动ftp模式(pasv)_网络安全工程师与白帽子黑客教你:Kali Linux之使用Metasploit进行FTP服务扫描实战...
- graylog2+syslog-ng+mongodb构建集中管理日志服务器 --转载
- 怎么导入sklearn包_在导入sklearn包是报错
- linux CentOS6.x 修改主机名(Hostname)
- 命令行开启windows下的iis信息服务,开启及配置http端口,开启及配置ftp端口
- P6477-[NOI Online #2 提高组]子序列问题【线段树】
- VBoxManage: error: Nonexistent host networking interface, name 'vboxnet0' (VERR_INTERNAL_ERROR)
- Java 获取文件目录最终的修改时间
- 总结的若干关于RecursionError: maximum recursion depth exceeded问题的解决办法
- emlog评论ajax,Emlog评论通过QQ获取昵称资料
- android 之日期选择器,Android GUI 之日期选择器(DatePicker)
- (译)C#/.NET中的委托与事件
- C#设计模式之一单例模式(Singleton Pattern)【创建型】
- feedback vertex set problem (FVS) 反馈顶点集问题 是什么
- VM虚拟机配置动态ip和静态ip访问
- 如何在visio中画出矩阵
- php怎么安装ecshop,ECSHOP4.0安装教程【ECSHOP4.0安装流程方法】ECSHOP4.0安装步骤-ECSHOP教程网...
- 云计算的定义是什么?
- DSC曲线峰面积的确定及仪器校正
- StatQuest-MachineLearning-Lesson1~5