如何将python doc字符串转码为Github readme.md
?
虽然看起来似乎每个人都做了,我似乎无法得到一个像样的解决方案,我认为它应该很容易,所以似乎人们不太可能抛出两个转换器......
pydoc 其实很简单.pydoc的输出是联机帮助页(UNIX系统的groff格式).这是一个死胡同,因为男人对md不是一件事.通过HTML,pydoc3 -w
+ pandoc,完全将文档字符串转换为位.
自定义代码似乎有很多简短的自定义代码,但对于少数我尝试过的输出似乎不如pydoc那样好,它有一个摘要,添加了继承的方法并列出了一些属性.
mkdocs.有人建议在某处.它只会污染我的文件夹,因为它是一个误导性的名称,因为它不是docstrings> md转换器,而是md> html.
狮身人面像+潘多克.在解决了UTF-8问题之后,我放弃了Sphinx,因为我有一个要转换的py脚本,并且快速启动的autodoc设置没有解析我的脚本.我尝试用Python导入sphinx.ext.autodoc
但TBH的文档太长了,我放弃了.
有一个[一年前未解答的SO问题](从Python Docstrings自动生成GitHub Wiki文档)关于这个主题,但我希望通过提供更多细节我会得到答案.
我在Openshift v3上的west-1有一个项目.在其中我有一个工作正常的应用程序和一个在GitHub提交代码中非常下游的东西后停止工作的应用程序.问题是制作一个吊舱:
No nodes are available that match all of the following predicates::
Insufficient cpu (173), MatchNodeSelector (5).
Run Code Online (Sandbox Code Playgroud)
我停了下来,然后我缩小了另一个吊舱,看看是否有任何奇怪的设置让对方的新版本可能已经拾起并且我得到了同样的结果.现在两者都破了.
是Red Hat Openshift耗尽了CPU还是我有一些奇怪的默认设置决定请求173个CPU和5个节点?
一个愚蠢的问题,但这是困扰我的(不管我的愚蠢的支持!):我认为我已经选择了一种荒谬的恐惧,即在方法使用的方法之外生成数据(不改变),但我不确定这是否是案子.
假设我有一个方法myfx
,需要一些datadex
需要冗长操作的字典,但在该会话期间对所有调用都是通用的.最简单但不可行的方法是:
def myfx(x,foo):
datadex={f:42 for f in foo} #initialise
mungeddata=datadex[x]+1 #munge
return mungeddata
Run Code Online (Sandbox Code Playgroud)
但这会浪费太多时间.所以最好的方法是在主要范围内进行一次,就像对类变量一样:
datadex={f:42 for f in foo} #initialise
def myfx(x):
mungeddata=datadex[x]+1 #munge
return mungeddata
Run Code Online (Sandbox Code Playgroud)
但是,我不知道为什么,但我会竭尽全力避免这种情况.它不够优雅,但我认为不是这样.我通常采用闭包:
def initialise(foo):
datadex={f:42 for f in foo} #initialise
def myfx(x):
mungeddata=datadex[x]+1 #munge
return mungeddata
return myfx
Run Code Online (Sandbox Code Playgroud)
或者更糟糕的是上课.我几乎完全用Python和JS编写代码.我最好的猜测是我的Perl编码时代的回归 - 不自觉地我发现自己先写了变量alla Pascal,所以我认为一些习惯会像阴影一样延续,但这并不能解释类或封闭方式,因为OO-Perl是完全不同.
因此,在 IPython Jupyter 笔记本中,您可以通过%% javascript
魔术单元语法或通过 Python 内核添加 JavaScript 函数,IPython.display.HTML
并且可以使用IPython.notebook.kernel.execute
.
但是,内核调用是在内核空闲时完成的。
单元格1,魔术单元JS添加功能。
%%javascript
window.act = () => IPython.notebook.kernel.execute('flag = False');
Run Code Online (Sandbox Code Playgroud)
单元 2,python 内核
from IPython.display import display, HTML
flag = True
display(HTML('''<p id="newDOMElement">New DOM element added </div>
<script type="text/Javascript">
act();
$('#newDOMElement').append('<b>and changed</b>.');
</script>'''))
import time
time.sleep(2) #wait in case it's a JS async issue.
print('JS did not change Py variable.' if flag else 'JS successfully changed Py variable.')
>> New DOM element added and changed. …
Run Code Online (Sandbox Code Playgroud) 我编写了一个JavaScript 小部件,它添加行号,但我不明白的一件事是在复制文本时防止复制数字。我希望人们能够复制数字周围的序列,但不能复制数字。 以下是脚本结果的示例。
基本上:
<span>useful stuff to be copied </span>
<span style="some-mysterious-setting: True;"> gloss to be discarded in selection </span>
<span> useful stuff to be copied</span>
Run Code Online (Sandbox Code Playgroud)
这些数字作为单独的跨度元素实现,而不是作为表格或任何花哨的东西。我尝试user-select: none;
了 CSS 中的变体,但这意味着它不会突出显示,但它仍然会复制编号。
在python中,是否有针对__str__
返回多行字符串的方法的PEP的一部分?
亲: PyCharm没有告诉我,谷歌画了一个空白
反对:我可以看到,如果有人连接它,感觉不是pythonic并且我不确定我能记得在我自己的代码中看到一个-bar,它会导致不优雅的反应
因此,我不确定是否只有多行__str__
返回(保持简单)或单独留下__str__
(即返回<class foo>
)并具有特殊模块(例如 foo.report()
).
break
在大多数语言中中断for循环,但在嵌套循环的情况下,我从未遇到过第n次中断.
1.用任何语言都有这样的东西吗?
2.如果是这样,它的正确名称是什么?
如果没有,为什么?
NB.我不是在寻找解决方法.
关于第3点.我知道最接近的是goto
,它不应该被使用,因为它会导致意大利面条代码(Python只在一个笑话模块中使用它),但这似乎是一个不同的问题,作为标记内部中断的布尔变量,捕获一个引发自定义错误或将块移动到一个函数以便与返回中断是更复杂的(在代码中的行号和变量方面).
(从理论的角度来看,这是一个好奇的问题,但如果它有帮助,我主要用Python,Matlab和JS编写代码.我知道Perl,Pascal和Basic,但我只知道C++的基础知识并且很少知道机器代码.)
我对Python的奇怪行为感到困惑locals()
.
基本上我想从locals()
词典理解中的字典中获取一个项目,但它失败了.这是一个非常基本的事情,所以:
>>> foo=123
>>> bar=345
>>> baz=678
>>> {k: locals()[k] for k in ('foo','bar','baz')}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <dictcomp>
KeyError: 'foo'
>>> locals()['foo']
123
>>> locale=locals()
>>> {k: locale[k] for k in ('foo','bar','baz')}
{'foo': 123, 'bar': 345, 'baz': 678}
>>> type(locals())
<class 'dict'>
>>> def fun():
... return {'foo': 123,'bar':345}
...
>>> {k: fun()[k] for k in ('foo','bar')}
{'foo': 123, 'bar': 345}
Run Code Online (Sandbox Code Playgroud)
在实际方面 …
python ×5
javascript ×2
break ×1
css ×1
dictionary ×1
docstring ×1
for-loop ×1
goto ×1
html ×1
kubernetes ×1
manpage ×1
markdown ×1
openshift ×1
pep8 ×1
python-3.x ×1