たとえば、と書くhelp(list)
と、リストオブジェクトに関するヘルプが表示されます。あなたが書くならばhelp(+)
、あなたは得るSyntaxError: invalid syntax
でしょうこれはなぜですか?
4 に答える
help
は通常の関数なので、他の関数と同じように引数を取ります。は有効な構文です。型をhelp(list)
に渡します。list
help
ただし、help(+)
これは不正な構文です(+は演算子であり、それ自体は式ではありません)。この場合、help('+')
代わりにを使用して+
オペレーターのヘルプを得ることができます。
これは、help
が単なる関数であるためです。その引数は、値に評価される構文的に有効な式である必要があります。
一部の言語では、実際には、直接(たとえば、+
Lispの通常の関数)または特別な構文(たとえば、Haskellの通常の関数として(+)
の演算子)のいずれかで、演算子を値として渡すことができます。+
しかし、Pythonではそうではありません。
+
もちろん、演算子は2つのオペランド()または1つの( )を指定することで式の一部にすることができますが、演算子自体の値にアクセスする方法はありません。(これは、実際には、単項加算、バイナリ加算、バイナリ連結の3つの異なる演算子であるためです。したがって、コンテキストのない「演算子の値」などはありません。ただし、次の演算子についても同じことが言えます。あいまいではありません。)2+3
+3
+
+
+
ご覧のとおり、これはタイプや機能とは異なります。
>>> list
builtins.list
>>> abs
<function builtins.abs>
>>> +
SyntaxError: invalid syntax
したがって、を含む関数に引数として渡すlist
ことはできますが、。を使用してそれを行うことはできません。abs
help
+
そのため、Pythonには、operator
渡すことができる「関数としての演算子」を提供するモジュールがあります。
>>> import operator
>>> operator.add
<function operator.add>
しかし、この場合、これは特に有用ではありません。
>>> help(operator.add)
add(...)
add(a, b) -- Same as a + b.
ありがとう…</p>
幸い、このhelp
関数には文字列を処理するための特別なコードがあります。ここで実際に必要なものについては、nneonneoの回答を参照してください。
これは、+が演算子であり、2つのオペランドを考慮しているためです。これは、次のように実行できます。
help(1+1)
1 + 1はintを返すため、ヘルプはintデータ型に関する情報を提供します。