【问题标题】:Sublime 3, snippet for python function docstring with arguments and returnSublime 3,带有参数和返回的python函数文档字符串的片段
【发布时间】:2013-09-16 13:08:19
【问题描述】:

我想写一个 sn-p 来将 docstring 添加到 Python 函数中:

例如:

def foo(a):

    b=a+1

    return b

应该产生如下

def foo(a):
    """One liner description

    Parameters
    ----------
    a : type
        some comment

    Returns
    -------

    b : type
        some comment

    """

    b=a+1

    return b

我的第一次尝试是这个 sn-p:

<snippet>
    <content><![CDATA[
"""${1:One liner description}

Parameters
----------
${2}
Returns
-------
${3}
"""
    ]]></content>
    <tabTrigger>docstring</tabTrigger>
    <scope>source.python</scope>
    <description>Adds a docstring skeleton to function</description>
</snippet>

在输入 docstring 然后 Tab 时会产生以下内容:

def foo(a):
    """One liner description

    Parameters
    ----------

    Returns
    -------

    """

    b=a+1

    return b

如何在 sn-p 中自动检测到参数和返回值,例如示例中的“a”和“b”?

【问题讨论】:

标签: python code-snippets sublimetext sublimetext3


【解决方案1】:

也许字符串替换对你有帮助。这是一个来自 Idle 的简短 sn-p 来演示语法。

>>> a = 123
>>> b = "abc"
>>> "%(a)s, %(b)s" % locals()
'123, abc'
>>> "%d, %s" % (a,b)
'123, abc'

获取类型:

>>> a = 123
>>> type(a)
<type 'int'>
>>> print type(a)
<type 'int'>
>>> type(a).__name__
'int'

x.__name__ 是私有属性,但它是“可访问的”

【讨论】:

    【解决方案2】:

    只需在每个${#} 停止点的# 之后添加:&lt;默认值&gt;

    <snippet>
        <content><![CDATA[
    """${1:One liner description}
    
    Parameters
    ----------
    ${2:a} : ${3:type}
    
    Returns
    -------
    ${4:b} : ${5:type}
    """
    ]]></content>
        <tabTrigger>docstring</tabTrigger>
        <scope>source.python</scope>
        <description>Adds a docstring skeleton to function</description>
    </snippet>
    

    【讨论】:

    • 这误解了我的问题:目的是有一个通用的方法来检测函数的参数和返回,并在sn-p中添加相应的条目。这里的a和b只是举例
    • AFAIK 你不能用 ST sn-p 做所有这些。即使有另一种方法,检测类型也会很困难,尤其是对于返回值,因为一个函数可以有多个。
    • Python 函数不能返回一个以上的值。它只能通过返回一个可迭代对象并使用解包将可迭代对象中的每个值分配给等效数量的变量来给出它所做的错觉。
    • @e-satis:我知道,但出于文档目的,检测可迭代中值的类型而不是仅仅生成通用的“返回序列”会很有用。无论如何,我怀疑 ST 甚至可以解决这个问题,除非是在最简单的情况下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2022-09-30
    • 2021-10-12
    • 1970-01-01
    相关资源
    最近更新 更多