![](/img/trans.png)
[英]My code works when not indented and not in a def function in python
[英]Are indented code under an `if` and a `def` both called blocks in Python?
在Python中, def
, class
等关键字引入了一个新的范围 。 其他人,比如if
或for
not - 他们使用封闭代码的范围。 (范围解析在范围规则的简短描述中进行了解释? )
对于这两种不同类型的关键字,“缩进”代码行的正确术语是什么?
例:
def foo():
do_bar() # indent type 1
do_another_bar() # indent type 1
例2:
if True:
do_something() # indent type 2
do_more_things() # indent type 2
缩进“类型1”和“类型2”都称为代码“ 块 ”吗?
一般来说,是的,在<keyword-clause>:
下缩进的任何文本部分都称为“块”。
C / C ++ / Java / JavaScript / Perl / PHP / etc中花括号内的任何文本部分也是如此。 缩进是Python的大括号。
Python中复合语句的语法将缩进的代码块定义为“套件”。 例如:
if_stmt ::= "if" expression ":" suite
( "elif" expression ":" suite )*
["else" ":" suite]
所以,在一个实际例子中:
if True:
print "It's true!"
包含print语句的行(以及该缩进级别内的任何其他行)将是一个套件。
如果将每个级别的缩进视为代码块有帮助,那很好。 但是,Python语法将其称为套件。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.