推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kuangwinnie
V2EX  ›  Python

如果用了 PEP484 的 type annotation, 是不是以前标注方式就可以当作是多行注释了?

  •  
  •   kuangwinnie · Mar 10, 2019 · 2055 views
    This topic created in 2700 days ago, the information mentioned may be changed or developed.
    Python 以前是没有多行注释的,''' \n ''' 这种标注方法只能拿来写类型标注。

    但是如果按照 PEP 484 这样的写法,是不是就不需要''' \n ''' 这样的标注了,就可以用这样的标注进行多行注释

    希望各位贤达不吝赐教

    https://www.python.org/dev/peps/pep-0484/
    PEP484

    关于多行注释的讨论:
    https://www.codecademy.com/en/forum_questions/505ba3cfc6addb000200e33c
    7 replies    2019-03-15 20:32:58 +08:00
    no1xsyzy
        1
    no1xsyzy  
       Mar 11, 2019
    不是 “ docstring 只能拿来写类型标注”
    而是 “只能拿 docstring 来写类型标注”
    kuangwinnie
        2
    kuangwinnie  
    OP
       Mar 12, 2019
    @no1xsyzy https://www.python.org/dev/peps/pep-0257/

    我的理解是 docstring 除了写 doc 就不应该用了
    是不能用来写 comment 的

    docstring <-> doc
    ungrown
        3
    ungrown  
       Mar 13, 2019 via Android   ❤️ 1
    类型标注、docstring、注释,这是三样东西。
    pep484 在老版本中不支持,而且本身还是实验性质。
    docstring 在任何情况下都可以作为说明文档,除了标注以外,还可以写任何你想写的内容,这里面分行也不需要'\n'。
    Python 没有专门的块注释、多行注释,因为 Python 的注释就是个井号开头的行,你想写几行注释就写几行。
    注释是井号开头的一行文字,三重引号不是注释而是 docstring,docstring 里分行不需要'\n'这样的转义符号,只有字符串、字节串之类的对象才需要手工加换行符表示新行。
    kuangwinnie
        4
    kuangwinnie  
    OP
       Mar 14, 2019
    @ungrown \n 只是个举例
    ungrown
        5
    ungrown  
       Mar 14, 2019 via Android
    我是个菜鸟,我假设你是个老鸟,有些结论和经验你应该比我清楚,就算不清楚等我说完你也能立刻理解。
    Python 作为一种动态类型、强类型语言,本身就倡导鸭子类型的设计理念,并不需要把数据的类型和结构定地特别死,自然也没必要在文档中不厌其烦地说太多。
    如果对象的类型和内部结构非常复杂,比如是个列表,里面装了 dict,dict 里面又嵌套 dict,而且某些 key 还得是专门的字符串。这样复杂的对象本来就不太可能用简单的类型标注说清楚,还是老老实实在 docstring 里码字才是正道。
    如果对象类型足够简单,你甚至连 docstring 都不需要表明类型,直接在参量名称上加点后缀都能表达清楚。
    如果复杂度介于上述两者之间,我觉得用 pep484 可能会非常省事,针对某些情况。
    而现实中上述三种情况彻底混作一团,那自然是具体问题具体分析。但又考虑到这点小事没必要花太多精力非要选择一个最佳方案,再考虑到团队代码风格可能有硬性要求,就更没必要在类型标注的方法选择这个问题上过于纠结。
    kuangwinnie
        6
    kuangwinnie  
    OP
       Mar 14, 2019
    @ungrown 我也是菜鸟
    只是单纯觉得这个问题挺有趣的

    我觉得我们这个讨论应该在 python 开发社区讨论过哈哈
    no1xsyzy
        7
    no1xsyzy  
       Mar 15, 2019   ❤️ 1
    @kuangwinnie docstring 仅限于一个块的第一个语句是字符串的情况。
    在其他地方出现不是 docstring
    例: https://pastebin.com/84AbtbtG (打完想起来这边 gist 能直接显示……)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2618 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 10:38 · PVG 18:38 · LAX 03:38 · JFK 06:38
    ♥ Do have faith in what you're doing.