如何为IDLE中的Python函数指定自定义提示描述

1 投票
1 回答
1734 浏览
提问于 2025-04-18 18:07

当我在IDLE 3.4.1中输入 print( 时,会弹出一个提示框:

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

显然,这个提示框是在定义print函数时自定义设置的,或者是在其他地方设置的。不过,如果我自己写一个函数

def func1(*args):
    ...

或者

def func2(*args):
    "func(arg, ...) -> do things"
    ...

甚至

def func3(*args: 'arg, ...') -> 'do things':
    ...

我的提示框显示的是:

(*args)

还有

(*args)
func(arg, ...) -> do things

还有

(*args: 'arg, ...') -> 'do things'

当然,我希望提示框显示 func(arg, ...) -> do things

那么,设置一个自定义的提示框/文档字符串是内置功能吗?如果不是,我该怎么做到呢?

1 个回答

1

这里有位开发者在闲聊。他提到,工具提示会显示实际的函数签名(如果有的话)和文档字符串的第一行内容(或者更多,最多可以显示五行,或者直到遇到第一行空白为止)。在3.4版本之前,内置函数的实际签名是无法获取的。因此,开发者们的解决办法是把(假定的)签名放在文档字符串里。不过,现在内置函数正在被改进,以提供实际的签名。当这些改进完成后,就不再需要这个解决办法了,文档字符串中的假签名也会被去掉。换句话说,你想要的那种形式其实是一个过时的解决办法,正在被淘汰。抱歉。

根据PEP8标准,文档字符串应该以一行总结性文字开头(后面跟一行空白),说明这个函数的作用。比如,对于一个真正的函数,可以写“返回一个实现愿望的星星。”对于那些有副作用的方法,可以用其他的开头,比如“重新安排甲板上的家具。”所以把签名放在func2的文档字符串里是“错误的”,而且对于用Python编写的函数来说,从来就不需要这样做。

撰写回答