我不能在Python中使用花括号吗?

时间:2009-12-20 15:57:52

标签: python

我读到Python通过缩进而不是花括号来完成它所有的“代码块”。是对的吗?所以函数,如果这样的东西都出现了,而不是用花括号包围它们的块?

16 个答案:

答案 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中的几个地方使用了不同的用途:

  1. 初始化非空集(唯一元素的无序集合):

    fuitBasket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
    

    Citation

  2. 初始化一个空字典(键值对):

    telephoneNumbers = {}
    
  3. 初始化一个非空字典(键值对):

    telephoneNumbers = {'jack': 4098, 'sape': 4139}
    

    Citation

答案 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)])