我读到Python通过缩进而不是花括号来完成它所有的"代码块".是对的吗?所以函数,如果这样的东西都没有用花括号包围它们的块?
小智 281
if foo: #{
print "it's true"
#}
else: #{
print "it's false!"
#}
Run Code Online (Sandbox Code Playgroud)
(显然,这是一个笑话.)
Ada*_*eld 87
您可以尝试使用将来的import语句添加对大括号的支持,但它尚不支持,因此您将收到语法错误:
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
Run Code Online (Sandbox Code Playgroud)
Pau*_*ite 36
纠正代码块.但是,您使用花括号在Python中定义词典:
a_dict = {
'key': 'value',
}
Run Code Online (Sandbox Code Playgroud)
AHHHHHH.
Luc*_*nes 27
是.不使用卷曲括号.相反,您使用:符号来引入新块,如下所示:
if True:
do_something()
something_else()
else:
something()
Run Code Online (Sandbox Code Playgroud)
cwa*_*wap 11
对 :)
而且(通常)4个空格和一个标签之间存在差异,因此请确保标准化使用情况.
是.
if True:
#dosomething
else:
#dosomething else
#continue on with whatever you were doing
Run Code Online (Sandbox Code Playgroud)
基本上,无论你在哪里都有一个开口花括号,请使用冒号代替.Unindent关闭该地区.它感觉完全自然不需要很长时间.
Python with Braces是python的一个变种,可以让你做到这一点.这是我最近和朋友一起工作的一个项目.
Python不对代码块使用花括号:
>>> while True {
File "<stdin>", line 1
while True {
^
SyntaxError: invalid syntax
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
Run Code Online (Sandbox Code Playgroud)
(请注意"非机会"消息 - 这是反映此设计决定的复活节彩蛋.)
作为一种易于使用和阅读的语言,Python使用冒号和缩进来指定代码块.通过缩进定义代码块是不寻常的,对于习惯于C++和C#等语言的程序员来说,这可能会让人感到意外,因为这些(和许多其他语言)不关心额外的空格或缩进.此规则旨在提高Python代码的可读性,代价是程序员可以自由使用不同数量的空白.
缩进级别的增加表示代码块的开始,而减少表示代码块的结束.按照惯例,每个压痕宽度为四个空间.
这是一个简单的例子,它将0到9之间的所有整数相加.请注意,Python中的范围包括第一个值,最多但不包括最后一个值:
j = 0
for i in range(0, 10):
j += i
print(j)
Run Code Online (Sandbox Code Playgroud)
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
Run Code Online (Sandbox Code Playgroud)
嗯,这解释了很多。
但是请注意,Python 本身确实支持花括号-d 代码块!看看下面:
if x: #{
x += 1
#}
Run Code Online (Sandbox Code Playgroud)
对于 Ada 或 Pascal 程序员,我很高兴向您透露:
if x: #BEGIN
...
#END
Run Code Online (Sandbox Code Playgroud)
取自文档:
Python 的解析器也足够复杂,可以识别混合符号,它甚至可以捕获丢失的开始或结束分隔符,并为用户纠正程序。这允许将以下内容识别为合法的 Python:
if x: #BEGIN
x = x + 1
#}
Run Code Online (Sandbox Code Playgroud)
而这对于 Bash 用户来说:
if x:
x=99
#fi
Run Code Online (Sandbox Code Playgroud)
更好的是,对于熟悉 C、C++ 等的程序员来说,您可以完全省略花括号,仅在一个语句中使用:
if x:
do_stuff()
Run Code Online (Sandbox Code Playgroud)
美丽的。如前所述,Python 也可以自动更正带有不正确分隔符的代码,所以这段代码也是合法的:
if x:
do_a_hundred_or_more_statements()
x = x + 1
print(x)
Run Code Online (Sandbox Code Playgroud)
由于这一定会让您更加喜欢 Python ,因此我将文档中的最后一句话送给您。
现在,您可以从这一系列示例中看到,Python 已将解析器技术和代码识别功能的最新技术发展到远远超出传统语言的水平。它以一种谨慎平衡良好编码风格与老程序员对语言语法外观感到舒适的需求的方式做到了这一点。
唯一的限制是这些特殊分隔符前面有一个主题标签符号。
小智 6
是的,您可以使用这个库/包 { Py } 使用大括号而不是缩进,并在 Python 语法中添加更多糖分。
https://pypi.org/project/brackets/
// Use braces in Python!
def fib(n) {
a, b = 0, 1
while (a < n) {
print(a, end=' ')
a, b = b, a+b
}
print()
}
/*
Powerful anonymous functions
*/
print([def(x) {
if(x in [0, 1]) {
return x
};
while (x < 100) {
x = x ** 2
};
return x
}(x) for x in range(0, 10)])
Run Code Online (Sandbox Code Playgroud)