V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
xiaoyanbot
V2EX  ›  Python

不想被缩进束缚,有个想法,想做一个有 { } 的 Python 版本或者编译插件, 现在有类似的解决方案吗?

  •  
  •   xiaoyanbot · 2017-12-30 19:01:40 +08:00 · 5467 次点击
    这是一个创建于 2527 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不想被 python 的缩进给束缚,

    看到有 python 的一些格式的插件,目前有解决方案吗? 拿 { } 来搞代码段结构

    第 1 条附言  ·  2018-01-01 09:22:26 +08:00
    parser 用 #[ 和 #]
    第 2 条附言  ·  2018-01-01 09:36:26 +08:00
    44 条回复    2018-01-01 15:47:11 +08:00
    xiaoyanbot
        1
    xiaoyanbot  
    OP
       2017-12-30 19:03:22 +08:00
    xiaoyanbot
        2
    xiaoyanbot  
    OP
       2017-12-30 19:04:16 +08:00   ❤️ 1
    from __future__ import braces
    ipwx
        3
    ipwx  
       2017-12-30 19:06:52 +08:00
    我觉得尊重一个语言和社区的传统是美德。

    Python 就该用缩进,不为什么,只是因为所有库都这么干了。
    jingniao
        4
    jingniao  
       2017-12-30 19:10:55 +08:00 via Android
    我现在有点不习惯大括号了😎
    guog
        5
    guog  
       2017-12-30 19:14:55 +08:00 via Android
    实话说,其他语言难道不用缩进了吗?排版整齐不仅仅为了保证语法正确,更多的是为了人读着方便吧。
    likuku
        6
    likuku  
       2017-12-30 19:21:40 +08:00
    那就去用 golang 吧,写起来几乎就是个带 {} 的 python
    xiaoyanbot
        7
    xiaoyanbot  
    OP
       2017-12-30 19:33:22 +08:00
    xiaoyanbot
        8
    xiaoyanbot  
    OP
       2017-12-30 19:40:01 +08:00
    congeec
        9
    congeec  
       2017-12-30 19:44:18 +08:00 via iPhone
    @ipwx 长长的 chaining methods,不换行能把人逼死


    @likuku 可惜 golang 用 camelCase
    xujif
        10
    xujif  
       2017-12-30 19:52:49 +08:00 via iPhone
    不然试试 typescript
    likuku
        11
    likuku  
       2017-12-30 20:04:27 +08:00
    @congeec [长长的 chaining methods] 那么可以认为那段代码需要优化 /重构了。80 列一行哦 (敲黑板)~
    ipwx
        12
    ipwx  
       2017-12-30 20:34:42 +08:00
    @congeec 斜杠换行被你吃了吗?
    lniwn
        13
    lniwn  
       2017-12-30 20:36:17 +08:00 via iPhone
    @likuku 我更觉得是带{}的 nohtyp
    Kilerd
        14
    Kilerd  
       2017-12-30 21:22:43 +08:00
    就算是 python with braces,你也需要用缩进来格式化你的代码。不然你这样是找不到工作的。
    recall704
        15
    recall704  
       2017-12-30 21:36:53 +08:00   ❤️ 1
    哈哈,我刚学 python 的时候特别讨厌没有花括号,特别讨厌 tab 和 空格不一样。
    后来,后来我就习惯了。
    congeec
        16
    congeec  
       2017-12-31 00:38:14 +08:00 via iPhone
    @ipwx 用斜杠不别扭么,还不如用括号包起来
    @likuku 长变量名多舒服,不用费脑力起名字
    20015jjw
        17
    20015jjw  
       2017-12-31 02:35:43 +08:00 via Android
    还是要缩进啊
    lz 你不知道每行不能超过 x 个字符么
    shadowwalker2644
        18
    shadowwalker2644  
       2017-12-31 03:52:14 +08:00 via Android
    我觉得楼主可能需要学会怎么重构代码
    PythonAnswer
        19
    PythonAnswer  
       2017-12-31 08:25:04 +08:00 via Android
    写 js 吧,自由很多,风格自己定。
    zsdroid
        20
    zsdroid  
       2017-12-31 09:44:43 +08:00
    @guog 其他语言确实不用缩进
    selfAccomplish
        21
    selfAccomplish  
       2017-12-31 10:20:42 +08:00
    难道老铁们不知道 Pycharm 按 ctrl+alt+L 可以自动格式化(换行、80 个字符自动换行等)?
    QAPTEAWH
        22
    QAPTEAWH  
       2017-12-31 11:19:11 +08:00 via iPhone
    )))))))))))))))))
    zhicheng
        23
    zhicheng  
       2017-12-31 13:55:44 +08:00
    不如试试 Lemon http://www.lemon-lang.org/
    guog
        24
    guog  
       2017-12-31 14:13:39 +08:00 via Android
    @zsdroid 你理解错了我的话。再说下,其他语言只是不用缩进来做语义分析,你写代码是给人看的,用了分号和大括号就能挤在一起写了吗?就能上行缩进俩字符,下行 tab 吗?反正都要缩进,何不整的统一点,看的也舒服些。
    xpresslink
        25
    xpresslink  
       2017-12-31 14:44:01 +08:00   ❤️ 3
    其实自己写 Python 代码和维护的时候,强制缩是有好处的。
    只是在交流沟通时会有一些障碍,因为很多论坛和在线编辑器会清除前导空格,
    这对于 Python 代码会造成非常大的理解困难。
    有了{}辅助以后即使缩进没有了也比较容易用 IDE 恢复缩进格式。
    其实 Python 还可以当成 Ruby 那样用的。

    __builtins__.end = None

    def test(x):
    if x > 0:
    print("a")
    else:
    print("b")
    end
    end


    def main():
    test(1)
    print('I can use end!')
    end

    main()
    zsdroid
        26
    zsdroid  
       2017-12-31 15:06:26 +08:00
    @guog 怎么统一?用大括号,左大括号换不换行都争个你死我活,谈何统一。。。
    像你说的那样"写代码是给人看的",我也赞同
    但 python 却很坑爹,python 的理念是"代码是个机器看的",
    这就是 python 的最大问题
    guog
        27
    guog  
       2017-12-31 15:24:12 +08:00 via Android
    @zsdroid 2333 大括号的问题🌚所以抛弃吧
    wangxiaoer
        28
    wangxiaoer  
       2017-12-31 15:28:04 +08:00 via Android
    格式化应该是 ide 负责,当然你可以手动管理,但 py 的手动格式化就等于人肉 parser, 这也合理??
    别外,2018 年了,还拿每行 80 个字符说事,真的能办?我都设置的每行 200 个字符。
    AlwaysBehave
        29
    AlwaysBehave  
       2017-12-31 16:25:32 +08:00
    @wangxiaoer 赞同
    @zsdroid 嗯,我觉得代码还是可以有一点个人风格?
    有人喜欢 tab 有人喜欢左括号换行,代码上传前可以说用 CI 统一一个规范
    但是下来我自己编辑的时候,我喜欢怎么样设置好 IDE 让他一键排版成我喜欢的样子我觉得很正常
    然后就是每次想要在 python 中间某个地方插一行东西的时候总是要看几遍缩进
    尤其是鼠标点的时候(应该是我姿势不对
    codehz
        30
    codehz  
       2017-12-31 16:50:32 +08:00
    @AlwaysBehave #29 你大概需要一款只储存 AST,而不存储实际代码的编程语言
    aristotll
        31
    aristotll  
       2017-12-31 17:22:20 +08:00
    虽然缩进作为语法一直是个槽点 不过要上 Python 这个贼船 还是只能忍吧
    xavierskip
        32
    xavierskip  
       2017-12-31 17:28:02 +08:00
    缩进会束缚你的什么?不明白?

    还是你的思想会被缩进束缚?
    Arnie97
        33
    Arnie97  
       2017-12-31 20:27:27 +08:00 via Android
    @guog @zsdroid #26 把大括号位置定死在语言规范里就行了,参见 Go 语言
    fy
        34
    fy  
       2017-12-31 20:50:38 +08:00
    有点难,不光是语法问题,还有一个声明范围的问题
    zsdroid
        35
    zsdroid  
       2017-12-31 20:57:12 +08:00
    @xavierskip 束缚什么??,一千个读者有一千个哈姆雷特,凭什么一千个读者的思想必须一致
    xavierskip
        36
    xavierskip  
       2017-12-31 21:04:09 +08:00
    @zsdroid #35 是呀,所以有一千个编程语言。但是所有使用 Python 的必须要用缩进,而且,有的人用 tab 缩进,有的人用空格缩进。

    你别先射箭再画靶子。

    我的结论:如果你纠结点在于到底要不要用缩进,那就别用 Python 了,那么多语言可用。如果你觉得缩进不舒服但是用起来能够解决问题那么你还纠结个什么。一个取舍而已。
    zsdroid
        37
    zsdroid  
       2017-12-31 21:16:20 +08:00
    @xavierskip 我纠结的是为什么 python 要这么设计
    xavierskip
        38
    xavierskip  
       2017-12-31 21:26:20 +08:00
    @zsdroid #37 文档中是这么说的 https://docs.python.org/3/faq/design.html#why-does-python-use-indentation-for-grouping-of-statements

    简单点说就是:创始人就是这么设计的。
    有优点也有缺点。你可能认为这是个 bug,其实这是个 features
    然后你上面说的『 python 的理念是"代码是个机器看的"』应该是"代码是给人看的"吧
    lrxiao
        39
    lrxiao  
       2018-01-01 08:49:26 +08:00
    对齐大括号互用..要不您试试 haskell
    lrxiao
        40
    lrxiao  
       2018-01-01 08:50:47 +08:00
    而且 py {}给 set 和 dict 用了 你这个 parser 怎么写。。
    xiaoyanbot
        41
    xiaoyanbot  
    OP
       2018-01-01 09:21:41 +08:00
    @lrxiao parser 用 #[ 和 #]
    limbo0
        42
    limbo0  
       2018-01-01 09:55:29 +08:00 via iPhone
    缩进比大括号要优雅,个人还是比较喜欢缩进的
    yacolinqi
        43
    yacolinqi  
       2018-01-01 10:47:35 +08:00
    这又是何必呢
    Wolther47
        44
    Wolther47  
       2018-01-01 15:47:11 +08:00 via iPhone
    是时候出 Python 4 了,另外,其实 Python 也可以声明类型,然后再写一个 Pybabel 转换成对应的版本
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1022 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:10 · PVG 07:10 · LAX 15:10 · JFK 18:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.