[英]How can I print curly braces with this style formatted text in python
[英]Is it true that I can't use curly braces in Python?
我读到Python通过缩进而不是花括号来完成它所有的“代码块”。 是对的吗? 所以函数,如果这样的东西都没有用花括号包围它们的块?
if foo: #{
print "it's true"
#}
else: #{
print "it's false!"
#}
(显然,这是一个笑话。)
您可以尝试使用将来的import语句添加对大括号的支持,但它尚不支持,因此您将收到语法错误:
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
纠正代码块。 但是,您使用花括号在Python中定义词典:
a_dict = {
'key': 'value',
}
AHHHHHH。
是。 不使用卷曲括号。 相反,您使用:
符号来引入新块,如下所示:
if True:
do_something()
something_else()
else:
something()
对 :)
而且(通常)4个空格和一个标签之间存在差异,因此请确保标准化使用情况。
Python with Braces是python的一个变种,可以让你做到这一点。 这是我最近和朋友一起工作的一个项目。
是。
if True:
#dosomething
else:
#dosomething else
#continue on with whatever you were doing
基本上,无论你在哪里都有一个开口花括号,请使用冒号代替。 Unindent关闭该地区。 它感觉完全自然不需要很长时间。
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)
正如其他人所提到的,你是正确的,在Python中没有花括号。 此外,你没有没有结尾或endif或endfor或类似的东西(如pascal或ruby)。 所有代码块都是基于缩进的。
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
那很好地解释了。
但请注意,Python本身支持大括号代码块! 看看下面:
if x: #{
x += 1
#}
对于Ada或Pascal程序员,我很高兴向您透露:
if x: #BEGIN
...
#END
取自文档 :
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已经提升了解析器技术和代码识别功能的先进水平,远远超出了传统语言的能力。 它以一种精心平衡良好编码风格的方式完成了这一点,并且需要老程序员对语言语法的外观感到满意。
唯一的限制是这些特殊的分隔符前面有一个#标签符号。
是的,Python中的代码块是由它们的缩进定义的。 Python的创建者对自我记录代码非常感兴趣。 它们在语法中包含缩进,作为一种天生地执行良好格式化实践的方式。
我用Python编程了几年,并且非常喜欢它的代码结构,因为它真的很容易。 你有没有在一个大型程序中遗漏一个结束的大括号,花了几个小时试图找到它? 在Python中不是问题。 当我离开那份工作并且不得不开始使用PHP时,我真的很想念Python语法。
关于格式字符串,花括号具有不同的含义。 请参阅https://docs.python.org/3/library/string.html?highlight=curly :
格式字符串包含由大括号{}包围的“替换字段”。 大括号中未包含的任何内容都被视为文本文本,它将不加改变地复制到输出中。 如果您需要在文字文本中包含大括号字符,可以通过加倍{{和}}来对其进行转义。
我会对这个问题有所了解。
不可否认,起初我还认为编写没有花括号的代码很奇怪。 但在使用Python多年后,我认为这是一个很好的设计。
首先,我们真的需要花括号吗? 我的意思是,作为一个人。 如果允许你在Python中使用花括号,你不会再使用缩进吗? 当然,你仍然会使用缩进! 因为你想编写可读代码,缩进是关键点之一。
第二,什么时候我们真的需要花括号? 据我所知,当我们需要缩小源代码文件时,我们只需要大括号。 像缩小的js文件一样。 但是,即使源代码的大小敏感,你会使用Python吗? 据我所知,你也不会。
最后,我认为花括号在某种程度上是这样的;
。 这只是一个历史问题,无论有没有它,我们总是会在Python中使用缩进。
是的,你可以使用这个库/包{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)])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.