当前位置: 首页 > 知识库问答 >
问题:

如何使用户定义的函数描述(“docstrings”)可供julia REPL使用?

何升
2023-03-14

当通过REPL使用检查时,用户定义的函数(例如f)如何具有有意义的打印输出?

例如,假设我写了以下函数

function f(x::Float64, y::Float64)
    return 2x - y^2
end

如果我将其加载到julia会话中并尝试help(f)我会得到以下结果:

julia> help(f)
f (generic function with 1 method)

如果我想看到这样的东西呢

julia> help(f)
f

   Compute 2 times x minus y squared

“计算2乘以x减y平方”的描述写在哪里。我猜测我的问题的答案可以从“描述应该写在哪里”的问题的答案中确定

举个例子,如果我想在python中做同样的事情,我可以定义函数,并将描述作为文档字符串:

def f(x, y):
    """
    Compute 2 times x minus y squared
    """
    return 2 *  x - y ** 2

当我输入help(f)f时,我的描述会立即可用 来自IPython。


共有2个答案

微生俊健
2023-03-14

在Julia v0中。5(包括最近的Julia版本,如1.2),可以在函数定义上方编写多行字符串。(不再需要@doc

julia> """
           cube(x)

       Compute the cube of `x`, ``x^3``.

       # Examples
       ```jldoctest
       julia> cube(2)
       8
       ```
       """
       function cube(x)
           x^3
       end
cube

help?> cube
search: Cdouble isexecutable Ac_mul_B Ac_mul_Bc Ac_mul_B! Ac_mul_Bc! cumsum_kbn

  cube(x)

  Compute the cube of x, x^3.

     Examples
    ≡≡≡≡≡≡≡≡≡≡

  julia> cube(2)
  8

有关正确格式化docstring的更多信息,请参阅官方文档。

劳英华
2023-03-14

您可以在Julia版本0.4(2015年10月)及以上版本中使用@doc宏。

% julia
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.4.0 (2015-10-08 06:20 UTC)
 _/ |\__'_|_|_|\__'_|  |  Official http://julialang.org/ release
|__/                   |  x86_64-apple-darwin13.4.0

julia> @doc """
       Compute 2 times x minus y squared.
       """ ->
       function f(x::Float64, y::Float64)
           return 2x - y^2
       end
f (generic function with 1 method)

julia> @doc f
  Compute 2 times x minus y squared.

编辑:正如@Harrison Grodin所指出的,0.5及以上版本支持缩写语法,以及Markdown、LaTEX和其他一些优点:

"""
Calculate the left Riemann sum[^1] approximating ``\int_a^b f(x) dx = F(b) - F(a).``

[^1]: Thomas G., Finney R. (1996), Calculus and Analytic Geometry, Addison Wesley, ISBN 0-201-53174-7
"""
function rs(a, b, d, f)
end

文档中有更多细节。

 类似资料:
  • 问题内容: 我在数据库中创建了标量函数 现在,我想在.NET C#或VB.NET代码中运行它。 我使用实体框架,尝试使用功能映射对其进行映射,但未成功。我不在乎用简单的DbCommand来做到这一点,问题是我没有得到任何结果(该函数存在于Entities类中): 有什么解决办法吗?欢迎使用C#或VB.NET发布。 问题答案: 在这种情况下,听起来 正确的 方法是使用实​​体框架的功能来定义.NET

  • 我知道如何在SparkSQL中编写UDF: 我可以做类似的事情来定义聚合函数吗?这是怎么做到的? 对于上下文,我想运行以下SQL查询: 它应该会返回类似于 我希望聚合函数告诉我,在由< code>span和< code>timestamp定义的组中,是否有任何< code>opticalReceivePower的值低于阈值。我需要把我的UDAF写得和我上面粘贴的UDF不同吗?

  • Python有一个很奇妙的特性,称为 文档字符串 ,它通常被简称为 docstrings 。DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行的时候,从函数恢复文档字符串! 使用DocStrings 例7.8 使用DocStrings #!/usr/bin/python # Filename: func_doc.py defprintM

  • 我正在尝试使用这里提供的jirarestapihttps://developer.atlassian.com/server/jira/platform/rest-apis/我正试图弄清楚如何在我的项目中得到对具体问题的描述。 当我做以下查询时: curl-D--u user:password-X GET-H“内容类型:application/json”http://localhost/jira/r

  • 问题内容: 我想使用反射调用Rows.Scan()函数。但是,它需要使用可变数量的指针,但是没有很多源示例。我需要使用反射,因为我计划用Query调用中的值填充一个切片。因此,基本上使用来获取行的长度,然后使用来切片以填充通常使用传递给函数的指针填充的数据点。 基本上像这样的代码: 有人举过一个调用可变参数函数的例子,该函数使用我可以查看的反射来获取指针? 编辑:似乎没有做我想要的示例代码。 结果

  • 问题内容: 我想使用自定义功能对a进行序列化和反序列化,但是Serde的书没有涵盖此功能,并且代码文档也无济于事。 我知道Serde可以很容易地反序列化,因为Chrono支持Serde, 但是 我想学习Serde,所以我想自己实现。当我运行此代码时,出现错误: 问题答案: 结构反序列化的默认行为是,当字段不以序列化形式出现时,为其分配各自的默认值。请注意,这与container 属性 不同,con