Python中如何实现类似C语言的大括号语法,避免缩进束缚?现有解决方案有哪些?

不想被 python 的缩进给束缚,

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


Python中如何实现类似C语言的大括号语法,避免缩进束缚?现有解决方案有哪些?
42 回复

Python没有C语言的大括号语法,但可以通过几种方式减少缩进带来的视觉负担:

  1. 使用反斜杠\续行:可以将长条件语句拆成多行
if condition1 and \
   condition2 and \
   condition3:
    do_something()
  1. 利用括号自动续行:Python在未闭合的括号内会自动续行
if (condition1 and 
    condition2 and 
    condition3):
    do_something()
  1. 使用__call__技巧(不推荐但可行):通过创建临时对象模拟大括号
class _:
    def __call__(self, func):
        return func()
_ = _()

if condition: _ (lambda:
    print("line1")
    print("line2")
    return None
)
  1. 使用exec()执行代码块:将代码作为字符串执行
if condition:
    exec("""
print('line1')
print('line2')
""")

实际建议:Python的缩进是语言特色,建议适应它而不是对抗它。如果觉得嵌套太深,应该重构代码(提取函数、使用早返回等),而不是寻找语法替代方案。

from future import braces

我觉得尊重一个语言和社区的传统是美德。

Python 就该用缩进,不为什么,只是因为所有库都这么干了。

我现在有点不习惯大括号了😎

实话说,其他语言难道不用缩进了吗?排版整齐不仅仅为了保证语法正确,更多的是为了人读着方便吧。

那就去用 golang 吧,写起来几乎就是个带 {} 的 python

长长的 chaining methods,不换行能把人逼死


可惜 golang 用 camelCase

不然试试 typescript

[长长的 chaining methods] 那么可以认为那段代码需要优化 /重构了。80 列一行哦 (敲黑板)~

斜杠换行被你吃了吗?

我更觉得是带{}的 nohtyp

哈哈,我刚学 python 的时候特别讨厌没有花括号,特别讨厌 tab 和 空格不一样。
后来,后来我就习惯了。

用斜杠不别扭么,还不如用括号包起来
长变量名多舒服,不用费脑力起名字

还是要缩进啊
lz 你不知道每行不能超过 x 个字符么

我觉得楼主可能需要学会怎么重构代码

写 js 吧,自由很多,风格自己定。

其他语言确实不用缩进

难道老铁们不知道 Pycharm 按 ctrl+alt+L 可以自动格式化(换行、80 个字符自动换行等)?

)))))))))))))))))

其实自己写 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()

怎么统一?用大括号,左大括号换不换行都争个你死我活,谈何统一。。。
像你说的那样"写代码是给人看的",我也赞同
但 python 却很坑爹,python 的理念是"代码是个机器看的",
这就是 python 的最大问题

2333 大括号的问题🌚所以抛弃吧

格式化应该是 ide 负责,当然你可以手动管理,但 py 的手动格式化就等于人肉 parser, 这也合理??
别外,2018 年了,还拿每行 80 个字符说事,真的能办?我都设置的每行 200 个字符。

赞同
嗯,我觉得代码还是可以有一点个人风格?
有人喜欢 tab 有人喜欢左括号换行,代码上传前可以说用 CI 统一一个规范
但是下来我自己编辑的时候,我喜欢怎么样设置好 IDE 让他一键排版成我喜欢的样子我觉得很正常
然后就是每次想要在 python 中间某个地方插一行东西的时候总是要看几遍缩进
尤其是鼠标点的时候(应该是我姿势不对

#29 你大概需要一款只储存 AST,而不存储实际代码的编程语言

虽然缩进作为语法一直是个槽点 不过要上 Python 这个贼船 还是只能忍吧

缩进会束缚你的什么?不明白?

还是你的思想会被缩进束缚?

#26 把大括号位置定死在语言规范里就行了,参见 Go 语言

有点难,不光是语法问题,还有一个声明范围的问题

束缚什么??,一千个读者有一千个哈姆雷特,凭什么一千个读者的思想必须一致

#35 是呀,所以有一千个编程语言。但是所有使用 Python 的必须要用缩进,而且,有的人用 tab 缩进,有的人用空格缩进。

你别先射箭再画靶子。

我的结论:如果你纠结点在于到底要不要用缩进,那就别用 Python 了,那么多语言可用。如果你觉得缩进不舒服但是用起来能够解决问题那么你还纠结个什么。一个取舍而已。

我纠结的是为什么 python 要这么设计

#37 文档中是这么说的 https://docs.python.org/3/faq/design.html#why-does-python-use-indentation-for-grouping-of-statements

简单点说就是:创始人就是这么设计的。
有优点也有缺点。你可能认为这是个 bug,其实这是个 features
然后你上面说的『 python 的理念是"代码是个机器看的"』应该是"代码是给人看的"吧

对齐大括号互用…要不您试试 haskell

而且 py {}给 set 和 dict 用了 你这个 parser 怎么写。。

parser 用 #[ 和 #]

缩进比大括号要优雅,个人还是比较喜欢缩进的

这又是何必呢

回到顶部