Python新手关于函数注释的问题

初学 python3 , IDE 是 PyCharm , PHP IDE 是 phpStorm

在 PHP 中,函数或方法可以加类似这样的注释( PHPDoc )

/**
* 连接到驱动
* [@param](/user/param) string $host
* [@param](/user/param) string $port
* [@return](/user/return) mixed
*/

IDE 可以识别并给出相应的提示、补全等,非常方便

但是在 python 里没有发现有相应的规范

搜了一下,都是些#单行、三引号多行之类,没有发现有类似 JavaDoc 、 PHPDoc 之类的注释规范,这写起代码来就很蛋疼啊

是 python 本身的问题吗?还是我没找到?


Python新手关于函数注释的问题

18 回复

对,自身问题,大家都在乱搞。 pep257 没有强制规定什么。
twisted 用 pydoctor, 个家都有自己的,不过八九不离十,找个靠谱的模仿就行了。


函数注释(Function Annotations)是Python 3引入的特性,主要用来给函数参数和返回值添加元数据,语法是在参数名或->后加冒号和表达式。比如:

def greet(name: str, times: int) -> str:
    return (name + " ") * times

这里的strint就是注释,说明name应该是字符串,times应该是整数,返回值是字符串。但要注意,这些注释只是注解,Python解释器不会做任何类型检查,它只是把注释存到函数的__annotations__属性里:

print(greet.__annotations__)  # 输出:{'name': <class 'str'>, 'times': <class 'int'>, 'return': <class 'str'>}

如果你想做静态类型检查,需要用typing模块配合mypy这类工具。对于新手,我建议先写清楚注释,等熟悉了再用typing

总结:函数注释是给参数和返回值加说明的元数据,但不影响运行。

pycharm 支持好几种的,我用的和你写的 php 注释方法差不多。你可以搜一下 Pycharm type hinting

谢邀。
三引号写成的注释可以通过 xxx.__doc__的方式获得。

#1 原来如此,好吧
#2 感谢你!我就按照 PyCharm 推荐的格式来吧
#3 哈哈哈哈哈哈哈哈神 TM 蟹妖,这 ID 可以的

#2 按照 4L 文档里的格式写了,然而还是没有提示啥的……我可能用了假的 PyCharm

贴上来看看?

有,你在函数声明下一行输入 “”" 然后回车就行
就和 php 输入 /**然后回车一样

这是我写的注释


这是调用此函数时 IDE 给出的智能提示……跟没有一样

#8 嗯嗯,我也发现了。目前根据 4L 的文档在学,但是注释写了跟没写一样,没啥效果,参照 9L 。不知道是不是我写的格式有问题

就是这样的,只会在你写错的时候有提示~在函数的位置按 ctrl Q 才能看见 docstring

#11 原来如此,感谢回答。刚从 PHP 过来,比较怀念 PHPDoc 的提示

#9 代码第一行改为 def get_info(li : str) -> list: 然后在调用的时候看一下 Pycharm 的提示

+1

这种如果调用时填错了类型, pycharm 会直接红线标出来。

楼主就用三个引号吧,别纠结了,大家都这样用的。 ide 有提示,__doc__也可以获取

#11 再请问下:我发现 import 好像并不是非要写在文件头的。那是不是当我要用到的时候再 import 这样性能会更好些呢?
#13
#14
#15
感谢,已按照 PyCharm 的帮助文档用上三引号了

不是,用到再 import 会带来一些潜在的问题,看看 pep8 ,能清除一些大众的点

回到顶部