当前位置: 首页 > 面试题库 >

如何从函数本身内部打印python函数的Docstring?

子车安和
2023-03-14
问题内容

我想从函数本身内部打印python函数的文档字符串。例如

def my_function(self):
  """Doc string for my function."""
  # print the Docstring here.

目前,my_function在定义之后,我将直接执行此操作。

print my_function.__doc__

但宁愿让函数自己执行此操作。

我已经尝试在my_function内调用它print self.__doc__ print self.my_function.__doc__print this.__doc__但这没有用。


问题答案:
def my_func():
    """Docstring goes here."""
    print my_func.__doc__

只要您不更改绑定到名称的对象,此方法就可以工作my_func

new_func_name = my_func
my_func = None

new_func_name()
# doesn't print anything because my_func is None and None has no docstring

您会执行此操作的情况很少见,但确实会发生。

但是,如果您编写这样的装饰器:

def passmein(func):
    def wrapper(*args, **kwargs):
        return func(func, *args, **kwargs)
    return wrapper

现在您可以执行以下操作:

@passmein
def my_func(me):
    print me.__doc__

这将确保您的函数获得对自身的引用(类似于self)作为其第一个参数,因此它始终可以获取正确函数的文档字符串。如果在方法上使用,则通常self成为第二个参数。



 类似资料:
  • 问题内容: 我有以下练习: 如果是工作日,则参数weekday为True,如果我们在假期,则参数Vacation为True。如果不是工作日,或者我们正在休假,我们会入睡。如果我们入睡,则返回True。 这是我所做的,但是第二个打印功能仅打印。 输出: 问题答案: 除非明确指示否则python中的函数会返回。 在上面的函数中,您没有考虑工作日为的情况。解释器到达函数的末尾而没有读取return语句(

  • 问题内容: 我刚开始学习Python,目前正在读一本教我的书,在这本书中,一个函数与我在下面编写的函数一样,会打印第一个函数中定义的实际文本。我运行我的脚本说: 作为输出。我究竟做错了什么?我安装了错误的Python或其他东西吗?我下载了3.3.0版本 这是我的代码: 问题答案: 您的函数已经打印了文本,您不需要打印函数。只是称呼他们(别忘了括号)。

  • 问题内容: 我有一个Python脚本正在使用我的雇主提供的某些封闭式Python函数(即我无法编辑这些函数)。当我调用这些函数时,它们会将输出打印到我想抑制的Linux终端上。我试过通过重定向标准输出/标准错误; 但这无法捕获输出。我认为我通过Python调用的函数(上面的rogue_function())实际上是经过编译的C代码的包装程序,它们实际上是在进行打印。 有谁知道一种方法可以对某个函数

  • 问题内容: 我想知道如何访问另一个函数中的一个函数。我看到了这样的代码: 那么,还有另一种方法来调用该 函数吗?我的第二个问题是,为什么在最后一行中我不打电话? 很好的解释深表感谢。 问题答案: 不,您不能直接调用它,因为它是的局部变量。 您需要使用,因为调用时返回了函数对象。要执行此功能对象,您需要 在这里您可以直接调用它,因为您可以访问它,因为它是由函数返回的。返回的对象实际上称为 闭包, 因

  • 问题内容: 我试图写一个递归函数,从打印到,但我不知道该怎么做。我不小心做了一个从到的打印: 我不知道这是否有帮助,也许我可以更改代码中的内容以使其从变为? 问题答案: 你差点知道了!这是一个固定的简化版本: 注意: 您不必从仅打印值的递归函数返回任何内容 对于升序打印时,声明必须放在 后 递归调用 如果仅打印,则递归退出,因为我们只在打印,此后无需执行任何操作即可返回(Python的默认返回值)

  • 问题内容: 我的代码中有一个字符串列表。 我想用换行符将它们打印出来,如下所示: 我试过了: 但是/ n不像换行符那样被识别。 问题答案: 你的斜线倒退了,应该是