有没有办法将Python代码中的缩进转换为大括号?

Jar*_*red 81 python accessibility blindness blind

我是一个完全盲目的程序员,想学习Python.不幸的是,代码块用不同的缩进级别表示的事实是一个主要的障碍.我想知道是否有任何可用的工具允许我使用大括号或其他代码块分隔符编写代码,然后将该格式转换为Python解释器可以使用的正确缩进表示形式?

Rya*_*yan 56

有一个解决你的问题,与python本身一起分发.pindent.py,它位于Windows安装的Tools\Scripts目录中(我的路径是C:\ Python25\Tools\Scripts),如果你在Linux上运行,看起来你已经从svn.python.org获取了它或OSX.

它在块关闭时添加注释,或者在放入注释时可以正确缩进代码.这是pindent通过命令输出的代码示例:

pindent.py -c myfile.py

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
       # end if
   else:
       print 'oops!'
   # end if
# end def foobar
Run Code Online (Sandbox Code Playgroud)

原件myfile.py是:

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
   else:
       print 'oops!'
Run Code Online (Sandbox Code Playgroud)

您还可以使用pindent.py -r基于注释插入正确的缩进(有关详细信息,请阅读pindent.py的标题),这应该允许您在python中编码而不必担心缩进.

我有兴趣了解您最终使用的解决方案,如果您需要任何进一步的帮助,请对此帖发表评论,我会尽力提供帮助.


Mez*_*Mez 11

我个人怀疑目前是否存在,因为很多Python afficionados都喜欢这样的事实,即Python就是这样,空白分隔.

然而,我从未真正将其视为可访问性问题.也许这是向Python提出错误报告的东西?

我假设您在这里使用屏幕阅读器输出?这些标签看起来对你来说是"看不见的"吗?使用盲文输出,它可能更容易阅读,但我可以理解这可能是多么令人困惑.

事实上,这对我来说非常有趣.我希望我知道足够能够编写一个能够为你做这个的应用程序.

我认为这肯定是我将在bug报告中提出的,除非你自己已经或者想要这样做.

编辑:另外,正如John Millikin指出的还有PyBraces这对你来说可能是一个可行的解决方案,并且可能会根据你的编码技巧被黑客攻击,这正是你所需要的(我希望如果是这样的话) ,你把它发布给像你这样的人使用)

编辑2:我刚刚向python bug跟踪器报告了这个问题


tec*_*cal 9

虽然我不是盲目的,但我听说过Emacspeak的好消息.自从1998年发布8.0以来,他们就拥有了Python模式(他们似乎已经发布了28.0!).绝对值得一试.


Joh*_*kin 6

你应该能够配置你的编辑器来说出标签和空格 - 我知道可以在大多数编辑器中显示空白,所以必须有一个可访问性选项来说出它们.

如果做不到这一点,那就是pybraces,它被写成一个恶作剧,但实际上可能对你有所帮助.

  • 但是,您必须考虑这样一个事实:在某个时刻,记住您在依赖于制表符的代码块中的位置将会很困难.大括号标记一个特定的开始和结束标记,而使用标签,它可能会令人困惑(我对它感到困惑,我看到了!) (2认同)

小智 6

如果您使用的是Windows,我强烈建议您从以下网址查看EdSharp:http://empowermentzone.com/EdSharp.htm 它支持所有领先的Windows屏幕阅读器,它可以配置为说明代码的缩进级别,或者它有一个名为PyBrace的内置实用程序,如果你想这样做,它可以转换为和大括号语法,它支持程序员在我们的文本编辑器中期望的各种其他功能.我已经使用它多年了,从PHP到JavaScript,从HTML到Python,我喜欢它.


la1*_*111 5

所有这些“不,你不能”类型的答案真的很烦人。当然可以。

这是一个 hack,但你可以做到。

http://timhatch.com/projects/pybraces/

在将大括号交给解释器之前,使用自定义编码将大括号转换为缩进块。


顺便说一句,作为 python 的新手 - 我不接受甚至不允许的理由括号/通用块分隔符背后的推理......除了 python 开发人员的偏好之外。如果您正在对代码进行一些自动处理或在不了解空格重要性的编辑器中工作,那么大括号至少不会被意外吃掉。如果您自动生成代码,那么不必跟踪缩进级别会很方便。如果你想使用 python 来做一个 perl 风格的单行代码,你自然会陷入困境。不说别的,只是作为一个保障。如果你的 1000 行 python 程序的所有选项卡都被吃掉了怎么办?您要逐行找出缩进应该在哪里吗?

询问它总是会得到半开玩笑的回答,比如“只需执行 'from __ future __ import braces'”、“正确配置你的 IDE”、“无论如何,它更好,所以要习惯它”……

我明白他们的观点,但是嘿,如果我愿意,我可以在每一行后面加一个分号。所以我不明白为什么每个人都对牙套如此执着。如果您需要语言强制您正确缩进,那么您一开始就没有做对。

只是我的 2c - 无论如何我都会使用牙套。

  • 事实上,我的观点已经随着经验而动摇了。我试图找到一种方法来强制 python 符合我的一个项目的需求,但沮丧地发现它以任何说服方式都拒绝这样做。我从不同的角度来看待它,发现 python 是一个美丽且高度协作的工作平台。我学到的主要教训是廉价的黑客和计算机不能很好地融合。我必须对解析算法进行一些深入的研究,但我所获得的知识是非常值得的。我仍然不关心缩进/缩进,但我尊重它们。 (2认同)