在Python中,`if`和`def`下的缩进代码都被称为块吗?
在Python中,如在Python中,`if`和`def`下的缩进代码都被称为块吗?,python,scope,block,terminology,indentation,Python,Scope,Block,Terminology,Indentation,在Python中,如def,class引入了一个新的。其他的,如if或for则不这样做-它们使用封闭代码的范围。(范围分辨率在中进行了说明。) 这两个不同类型的关键字下“缩进”的代码行的正确术语是什么 例如: def foo(): do_bar() # indent type 1 do_another_bar() # indent type 1 例2: if True: do_something() # indent type 2 do_more_things(
def
,class
引入了一个新的。其他的,如if
或for
则不这样做-它们使用封闭代码的范围。(范围分辨率在中进行了说明。)
这两个不同类型的关键字下“缩进”的代码行的正确术语是什么
例如:
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”都称为代码的“块”吗?一般来说,是的,缩进到
:
下的文本的任何部分都称为“块”
C/C++/Java/JavaScript/Perl/PHP/等中花括号内的任何文本部分也是如此。缩进是Python的花括号。一般来说,是的,缩进在
:
下的任何文本部分都称为“块”
C/C++/Java/JavaScript/Perl/PHP/等中大括号内的任何文本部分也是如此。缩进是Python的大括号。复合语句和套件
Python中a的语法将缩进的代码块定义为“套件”。例如:
if_stmt ::= "if" expression ":" suite
( "elif" expression ":" suite )*
["else" ":" suite]
因此,在一个实际示例中,如:
if True:
print "It's true!"
包含print语句的行(以及该缩进级别内的任何其他行)将是一个套件
如果将每一级缩进看作一个代码块会有所帮助的话,那就好了。但是,Python语法将其称为套件。:) 复合语句和套件
Python中a的语法将缩进的代码块定义为“套件”。例如:
if_stmt ::= "if" expression ":" suite
( "elif" expression ":" suite )*
["else" ":" suite]
因此,在一个实际示例中,如:
if True:
print "It's true!"
包含print语句的行(以及该缩进级别内的任何其他行)将是一个套件
如果将每一级缩进看作一个代码块会有所帮助的话,那就好了。但是,Python语法将其称为套件。:) 语句下面缩进的那一行叫做a。我很难真正理解你在问什么。if语句和for循环中引入的变量是局部范围的一部分,如果这是您要问的…@mgilson:我不是指有效的变量命名。我试图谈论代码块,但不确定这是否是正确的术语。我试图用一个例子来澄清我的问题。@mgilson,但我认为问题是指
if
和for
不创建新的局部作用域,而def
和class
创建新的局部作用域。显然,任何地方引入的变量都是其局部作用域的一部分,除非另有声明,但这个作用域有多大是个问题。@naxa--我明白了。谢谢你澄清这个问题。语句下面缩进的那一行叫做a。我很难真正理解你在问什么。if语句和for循环中引入的变量是局部范围的一部分,如果这是您要问的…@mgilson:我不是指有效的变量命名。我试图谈论代码块,但不确定这是否是正确的术语。我试图用一个例子来澄清我的问题。@mgilson,但我认为问题是指if
和for
不创建新的局部作用域,而def
和class
创建新的局部作用域。显然,任何地方引入的变量都是其局部作用域的一部分,除非另有声明,但这个作用域有多大是个问题。@naxa--我明白了。谢谢你澄清这个问题。我怀疑不使用“块”这个词是为了避免混淆熟悉块范围语言的人。这并没有多大帮助。我怀疑不使用“块”一词是为了避免让熟悉块范围语言的人感到困惑。这并不是说这有多大帮助。