我读到Python通过缩进而不是花括号来完成它所有的“代码块”。是对的吗?所以函数,如果这样的东西都出现了,而不是用花括号包围它们的块?
答案 0 :(得分:274)
if foo: #{
print "it's true"
#}
else: #{
print "it's false!"
#}
(显然,这是一个笑话。)
答案 1 :(得分:86)
您可以尝试使用future import语句添加对大括号的支持,但它尚不受支持,因此您将收到语法错误:
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
答案 2 :(得分:33)
纠正代码块。但是,您使用花括号在Python中定义字典:
a_dict = {
'key': 'value',
}
AHHHHHH。
答案 3 :(得分:26)
是。不使用卷曲括号。相反,您使用:
符号来引入新块,如下所示:
if True:
do_something()
something_else()
else:
something()
答案 4 :(得分:12)
答案 5 :(得分:10)
是的:)
并且(通常)4个空格和标签之间存在差异,因此请确保标准化使用情况。
答案 6 :(得分:7)
是
if True:
#dosomething
else:
#dosomething else
#continue on with whatever you were doing
基本上,只要你有一个开口花括号,就用一个冒号代替。 Unindent关闭该地区。它不需要很长时间就能感觉到完全自然。
答案 7 :(得分:7)
Python with Braces是python的一个变种,可以让你做到这一点。 这是我最近和朋友一起做的一个项目。
答案 8 :(得分:5)
Python不对代码块使用花括号:
>>> while True {
File "<stdin>", line 1
while True {
^
SyntaxError: invalid syntax
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
(请注意“非机会”消息 - 这是反映此设计决定的复活节彩蛋。)
作为一种易于使用和阅读的语言,Python使用冒号和缩进来指定代码块。通过缩进定义代码块是不寻常的,对于习惯于C ++和C#等语言的程序员来说,这可能会让他们感到惊讶,因为这些(和许多其他语言)不关心额外的空格或缩进。此规则旨在提高Python代码的可读性,代价是程序员可以自由使用不同数量的空白。
缩进级别的增加表示代码块的开始,而减少表示代码块的结束。按照惯例,每个缩进宽度为四个空格。
这是一个简单的例子,它将0到9之间的所有整数求和。请注意,Python中的范围包括第一个值,最多但不包括最后一个值:
j = 0
for i in range(0, 10):
j += i
print(j)
答案 9 :(得分:3)
正如其他人所提到的,你是对的,在Python中没有花括号。此外,您没有 end 或 endif 或 endfor 或类似的东西(如pascal或ruby)。所有代码块都是基于缩进的。
答案 10 :(得分:2)
是的,Python中的代码块由它们的缩进定义。 Python的创建者对自我记录代码非常感兴趣。它们在语法中包含缩进,作为一种天生地执行良好格式化实践的方式。
我在Python中编程了几年,并且非常喜欢它的代码结构,因为它真的很容易。你有没有在一个大型程序中遗漏一个结束的大括号,花了几个小时试图找到它?在Python中不是问题。当我离开那份工作并且不得不开始使用PHP时,我真的很想念Python语法。
答案 11 :(得分:1)
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
这解释了很多。
但是请注意,Python本身支持花括号代码块!看看下面的内容:
if x: #{
x += 1
#}
对于Ada或Pascal程序员,我很高兴向您透露:
if x: #BEGIN
...
#END
取自docs:
Python的解析器也足够复杂,可以识别混合 表示法,甚至可以捕获缺少的开头或结尾 定界符并为用户更正程序。这允许 以下是公认的合法Python:
if x: #BEGIN
x = x + 1
#}
这是针对Bash用户的
if x:
x=99
#fi
更好的是,对于熟悉C,C ++等的程序员,您可以只为一条语句完全省略花括号:
if x:
do_stuff()
美丽。如前所述,Python还可以使用不正确的分隔符自动更正代码,因此该代码也是合法的:
if x:
do_a_hundred_or_more_statements()
x = x + 1
print(x)
因为这一定会让您喜欢Python 更多,所以我送给您最后一份来自文档的报价。
现在从这一系列示例中可以看到,Python具有 先进的解析器技术和代码 识别功能远远超出了传统语言。 它以仔细平衡良好编码的方式完成了此操作 风格,需要年长的程序员适应 语言语法的外观。
唯一的限制是这些特殊的定界符前面带有井号标签。
答案 12 :(得分:0)
在Python中,四个空格()用于代替花括号(
{
)的缩进。不过,花括号在Python中的几个地方使用了不同的用途:
答案 13 :(得分:0)
就格式字符串而言,花括号具有不同的含义。参见https://docs.python.org/3/library/string.html?highlight=curly:
格式字符串包含用花括号括起来的“替换字段” {}。大括号中不包含的所有内容均视为文字 文本,原样复制到输出中。如果您需要包括 文字文本中的大括号字符,可以通过加倍转义: {{和}}。
答案 14 :(得分:0)
我将对这个问题进行一些思考。
首先,我也承认编写没有花括号的代码很奇怪。但是在使用Python多年之后,我认为这是一个很好的设计。
首先,我们真的需要花括号吗?我的意思是,作为一个人。如果您被允许在Python中使用花括号,那么您将不再使用缩进吗?当然,您仍然会使用缩进!因为您要编写可读的代码,所以缩进是关键点之一。
第二,我们何时真正需要花括号?据我认为,当我们需要最小化源代码文件时,我们只需要严格使用花括号。就像缩小的js文件一样。但是,即使在源代码大小敏感的情况下,您是否也会使用Python?而且据我所知,您不会。
最后,我认为花括号有点像;
。这只是一个历史问题,无论有没有,我们将始终在Python中使用缩进。
答案 15 :(得分:0)
是的,您可以使用此库/软件包{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)])