我正在使用Python
但是空间差距让我的生活变得非常困难
示例
当我使用 if 语句时
if Parm2 == 1:
Ch = "A"
elif Parm2 == 2:
Ch = "B"
elif Parm2 == 3:
Ch = "C"
else:
continue
mdl = CallFunc(Parm2)
print("XX Always Print XX")
现在无论如何都应该打印“XX Always Print XX”
但由于我的错误,它位于 if 语句内,导致我很长时间才找到
实际的 if 语句是嵌套的并且更长
我想知道是否有一种方法可以在Python中的此类语句中使用begin/end或{}
类似的东西
对于关注 IF 语句的人
if Parm2 == 1:
{
Ch = "A"
}
elif Parm2 == 2:
{
Ch = "B"
}
elif Parm2 == 3:
{
Ch = "C"
}
else:
{
mdl = CallFunc(Parm2)
}
print("XX Always Print XX")
现在快乐吗?
现在如何让括号在 Python 中工作?
Python是基于缩进的。是的,就像你指出的那样,它更难阅读,更容易犯错误,但事实就是如此。
考虑下载一个Python IDE,比如Pycharm,它们有助于识别像这样的错误,它们还具有“自动缩进”功能。但不,Python 是基于缩进的。
Python 设计者意识到,大括号或
begin/end
关键字对于人类程序员来说大多是噪音。他们通常通过代码的布局来识别代码的结构。例如,如果您要编写 C 代码:
if (condition)
x = y;
w = z;
人们通常不会注意到大括号丢失了,并假设这两个分配都是由条件控制的。编写这样的代码是一种常见错误,尤其是当您从只有一个语句的块开始时(因此大括号是可选的并且被省略),并且在添加第二个语句时忘记添加大括号。 (请参阅为什么省略大括号被认为是不好的做法?)。
相反,如果你写
if (condition) {
x = y;
w = z;
}
看起来
w = z;
是不是条件条件的一部分。
大括号的存在主要是为了处理代码的软件(编译器、编辑器、IDE)的利益,它们使它们更容易检测代码组。 Python 设计者决定模仿人类在解析器中读取代码的方式,而不是强迫人类适应计算机的需求。
大括号允许更灵活的代码布局,但在实践中,利用这一点通常被认为是错误的。编写代码如下
while (something) { statement1; statement2;
statement3; }
比
可读性差while something:
statement1
statement2
statement3
Python 确实允许 some 灵活性:您可以使用
;
分隔同一行上的语句,并将条件语句的内容放在 :
之后的同一行上。但这样的写法不被认为是Pythonic,并且应该只在非常特殊的情况下使用(这篇博文描述了这些情况)。
当你学习一门新的编程语言并且你习惯了以前使用的语言的模式时,总是需要进行一些调整(许多程序员拒绝学习 Lisp,因为它的L很多I烦人) ,S愚蠢的P括号)。但给它一点时间,你就会习惯的。
这展示了如何破解它:
if True: {
print("hello")
}
如果你在谷歌上搜索“如果你不想对块使用缩进,python 怎么办”你可能会得到: 桃核蟒蛇压痕
熟悉其他语言的程序员常常对缩进很重要的想法感到愤怒:许多程序员喜欢按照自己喜欢的方式自由地格式化代码。然而,Python 缩进规则非常简单,大多数程序员已经使用缩进来使代码可读。 Python 只是将这个想法更进一步,并赋予了缩进意义。
即他们强迫你不要使用缩进。
我的问题是,我喜欢使用 emacs 自动缩进来重新缩进整个代码文件,但这完全搞乱了 python 中的缩进;在 C 或 C++ 中,这可以找到缩进问题并使它们变得明显;在 python 中,它会丢失所有信息并改变程序的含义;
不要误会我的意思,我想同时使用严格的缩进和花括号;
您可以使用上面的技巧来“规避”Python 缩进,但是当为自己以外的任何人编写代码时它不会流行。
我的解决方案是使用#begin和#end来划分块,所以如果缩进混乱,我可以弄清楚如何恢复它。 Python 只是将它们视为引号 - 没问题。
选项:省略#begin,仅使用#end。
选项:不要简单地添加#end,而是添加文本来指示它是哪个块,例如#end if()。