1

Python では、のようなキーワードが新しいスコープdefを導入します。他のものは、好むと好まざるとにかかわらず、囲んでいるコードのスコープを使用します。(スコープの解決については、スコーピング ルールの簡単な説明で説明されています。)classiffor

これら 2 つの異なる種類のキーワードの「下にインデントされた」コード行の適切な用語は何ですか?

例:

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」はどちらもコードの「ブロック」と呼ばれますか?

4

2 に答える 2

2

一般的に言えば、はい、aの下にインデントされたテキストのセクションは<keyword-clause>:「ブロック」と呼ばれます。

同じことが、C / C ++ / Java / JavaScript / Perl / PHP/etcの中括弧内のテキストのセクションにも当てはまります。インデントはPythonの中括弧です。

于 2013-02-22T17:02:56.947 に答える
2

複合ステートメントとスイート

Python の複合ステートメントの文法では、インデントされたコード ブロックを「スイート」として定義します。例えば:

if_stmt ::=  "if" expression ":" suite
             ( "elif" expression ":" suite )*
             ["else" ":" suite]

したがって、次のような実際的な例では:

if True:
    print "It's true!"

print ステートメントを含む行 (およびそのレベルのインデント内の他の行) はスイートになります。

インデントの各レベルをコード ブロックと考えるのに役立つ場合は、問題ありません。ただし、Python 文法ではこれをスイートと呼びます。:)

于 2013-02-22T17:12:29.387 に答える