每个周末我都在编写一个个人项目,随着时间的推移已经达到了一定程度的复杂性,在那里我有不同功能的序列来接受我的输入,我保存在一些类对象中,将其删除,处理它然后最后输出它.
由于我在编码会话之间做了很大的休息,我通常会忘记代码的精确结构.因此,每次我遇到错误时,我都必须重新熟悉输入数据如何在我的代码中流动,如何在一些提供功能的模块内部组织等等.
我不确定这是由于我的软件的代码结构不好,还是仅仅是固有的复杂性.
是否有一个工具,在给定源代码的情况下,直观地向我展示了我的代码的"架构",即类方法和函数如何一起工作?
理想情况下,这也可以帮助我理解其他人写得更快的代码,快速了解各个代码片段之间的交互方式.
(我用Pycharm在Python中编码,如果这对你有帮助的话.)
python architecture production-environment pycharm productivity-power-tools
考虑以下功能
# in mymodule.py:
def myfunc(num,mystring):
"""
replicates a string
:param num: a positive integer
:param mystring: a string
:return: string concatenated with itself num times
:Example:
>>> num = 3
>>> mystring = "lol"
>>> myfunc(num, mystring)
"lollollol"
"""
return num*mystring
Run Code Online (Sandbox Code Playgroud)
如果我使用Sphinx从我的文档字符串生成代码,则看起来像这样(这次我使用的是默认主题haiku,在rstor conf.py文件中没有太多更改):
是否有任何主题或其他变通办法可以解决我用颜色指示的问题?
我尝试了不同的方法,但均无效果,但我无法获得1.-4的任何要点。去工作。
编辑的想法是,我不想要编辑的HTML,这是方式繁琐。我只想对Sphinx 目录中的conf.py和index.rst文件进行更改docs,以进行上述更改。
如果浏览官方 Python 文档,可以看到各种函数(或类)签名。
对于例如
random.uniform(a, b)
很容易理解:您向它传递两个对象a和b(它们是浮点数,它从它们之间的间隔返回一个随机数)。同样容易理解的是签名来自
SSLSocket.getpeercert(binary_form=False)
其中还指定了参数的默认值,以防它在没有任何参数的情况下被调用。
但是也有一些函数具有非常奇怪的签名,例如
min(iterable, *[, key, default])
readline.append_history_file(nelements[, 文件名])
csv.register_dialect(名称[,方言[,**fmtparams]])
这些都是什么意思?是否有一些参考指南解释如何阅读诸如name[, dialect[, **fmtparams]]?
这些示例只是从官方 Python 文档中随机抽取的,并未涵盖我遇到的所有签名类型。我需要一个如何阅读这些签名的一般解释。
几乎每种主要的编程语言都带有标准库。似乎R没有。CRAN 有大量的自定义包,但我找不到符合“标准库”的条件。这个base包似乎很接近,但也有这个recommended包,我无法达成共识,哪一个最接近所谓的“标准库”。
是否存在Isabelle用户遵循的"通用"非正式算法,当他们试图证明某些事情未被立即证明auto或sledgehammer?如果auto需要额外的引理,由用户制定成功或者如果使用更好的一些其他证明方法,一种通用的方法.
一个相关的问题是:是否可能在某处找到一个表格,其中包含所有证明方法以及应用它们的上下文?当我阅读 编程和校对教程时,各种方法的描述(分别是某些方法的变体,例如许多变体auto)都散布在文本中,这不断让我回到文本和Isabelle代码之间(这也会导致忘记究竟用于什么),这导致工作效率非常低.
假设我有一些 Pandas 数据框df,其中有一个名为“HEIGHT”的列,以及许多其他列。
如果我发出list(df["HEIGHT"]),那么这将按照它们在数据框中的确切顺序为我提供该列中项目的列表,即按数据框的索引排序。
总是这样吗?该df["HEIGHT"]命令将返回一个系列list()并将其转换为列表。但是这些操作总是保序的吗?有趣的是,在 Pandas 作者 (!) 的第1本书中,从我到目前为止的阅读来看,我不清楚这些基本操作何时保持秩序;顺序可能总是保留,还是有一些简单的规则可以知道何时应该保留顺序?
这可能是一个愚蠢的问题,但我不知道如何使用我们没有定义或导入的对象.
请考虑以下示例,使用Python的datetime模块:
from datetime import date
date1 = date(2019,1,1)
date2 = date(2019,1,5)
type(date2-date1) #<class 'datetime.timedelta'>
type(date2) #<class 'datetime.date'>
Run Code Online (Sandbox Code Playgroud)
然后date2-date1就是timedelta上课,即使我们没有导入这个.
(我可能还会做其他示例,我们获取对象,即使我们没有定义它们.)
怎么会这样?
我是否应该考虑这些新对象只是作为内存中由其他函数返回的片段弹出,即使我们没有定义它们,也包含"本身"足够的信息,以便Python解释器可以有意义地应用type()和他们的其他功能?