2016-05-16 1 views
-1

関数はタプルとして扱われるか、またはf(x)の結果として扱われるので、カッコで囲まれたパラメータは渡されますか?Python関数のパラメータは、タプルで囲まれているのか、あるいは通常の括弧で囲まれていますか?

def foo(b, a, r): 
    pass 

あるいは、それは例えば、より多くの括弧は数学式で使用されている方法のようなものである:

すなわち(B、R)ここでタプル

>>> 3 * 2 + 1 
7 
>>> 3 * (2 + 1) 
9 
+2

これらのかっこは、関数定義と関数呼び出しのための特定の構文の一部です。それらはタプルでも通常のカッコでもありません。 – Bakuriu

+2

これはどうやって疑問ですか?例で良い説明、彼をdownvoteする必要はありません。 –

+2

@ MarkusMeskanen:これは簡単に研究されています。私は研究の参考文献は見ない。 [Pythonリファレンスドキュメント](https://docs.python.org/2/reference)は非常によく書かれており、その答えはそのドキュメントの中にあります。 [呼び出し式セクション](https://docs.python.org/2/reference/expressions.html#calls)、[かっこ式](https://docs.python.org/2/reference/)があります。 expressions.html#parenthesized-forms)または[式リスト](https://docs.python.org/2/reference/expressions.html#expression-lists)のセクションをご覧ください。またはスタックオーバーフローのタプルについて読んでください。 –

答えて

1

関連する行は、次のとおりです。

funcdef: 'def' NAME parameters ['->' test] ':' suite 
parameters: '(' [typedargslist] ')' 

だからあなたの例では、文法は(b, a, r)は、括弧で囲まれたtypedargslistであると言うでしょう。

3

Pythonではタプルとして認識されません。例えば、タプルはkeyword=value引数を取らないが、呼び出し構文となる。

タプルは括弧とにかくによって形成されていない、彼らはコンマによって形成され、そしてあなただけのPythonでコンマの他の用途からタプルを一義化する際タプルの周りに括弧を使用する必要があります。カンマが位置引数を区切る関数呼び出しの場合と同じです。

ザPythonの文法はpart of the call expression syntaxとして通話中括弧とコンマの両方を定義:

call     ::= primary "(" [argument_list [","] 
          | expression genexpr_for] ")" 

他所タプルはカンマで形成されるものとして定義されます。 expression listsを参照してください:

expression_list ::= expression ("," expression)* [","] 

少なくとも一つのカンマを含む式リストはタプルになります。タプルの長さは、リスト内の式の数です。

のみ","カンマがリテラル構文の一部であることに注意してください、ここで(...)括弧は、文法を定義する構文の一部です。

括弧(式グルーピング)の他の使用はparethezised formsに定義されている:

括弧形態は括弧で囲まれた任意の式のリストであり、リテラル"("")"文字再度注意:

parenth_form ::= "(" [expression_list] ")" 

括弧で囲まれた式リストは、その式リストがもたらすすべてのものを返します。リストに少なくとも1つのカンマが含まれている場合は、タプルが生成されます。それ以外の場合は、式リストを構成する単一の式が生成されます。

括弧が使用されるPython文法には、いくつかの場所があります。full grammar specificationを参照してください。これらは通常、呼び出し構文(functionclass定義、デコレータ)またはかっこ付きのフォーム(たとえばインポートされた名前をグループ化する)のいずれかに、generator expressionsを返します。あなたはPython Grammar.

を見て、これに答えることができ

関連する問題