-1

たとえば、と書くhelp(list)と、リストオブジェクトに関するヘルプが表示されます。あなたが書くならばhelp(+)、あなたは得るSyntaxError: invalid syntax でしょうこれはなぜですか?

4

4 に答える 4

6

helpは通常の関数なので、他の関数と同じように引数を取ります。は有効な構文です。型をhelp(list)に渡します。listhelp

ただし、help(+)これは不正な構文です(+は演算子であり、それ自体は式ではありません)。この場合、help('+')代わりにを使用して+オペレーターのヘルプを得ることができます。

于 2013-02-13T20:36:28.497 に答える
3

これは、helpが単なる関数であるためです。その引数は、値に評価される構文的に有効な式である必要があります。

于 2013-02-13T20:36:15.490 に答える
1

一部の言語では、実際には、直接(たとえば、+Lispの通常の関数)または特別な構文(たとえば、Haskellの通常の関数として(+)の演算子)のいずれかで、演算子を値として渡すことができます。+しかし、Pythonではそうではありません。

+もちろん、演算子は2つのオペランド()または1つの( )を指定することで式の一部にすることができますが、演算子自体の値にアクセスする方法はありません。(これは、実際には、単項加算、バイナリ加算、バイナリ連結の3つの異なる演算子であるためです。したがって、コンテキストのない「演算子の値」などはありません。ただし、次の演算子についても同じことが言えます。あいまいではありません。)2+3+3+++

ご覧のとおり、これはタイプや機能とは異なります。

>>> list
builtins.list
>>> abs
<function builtins.abs>
>>> +
SyntaxError: invalid syntax

したがって、を含む関数に引数として渡すlistことはできますが、。を使用してそれを行うことはできません。abshelp+

そのため、Pythonには、operator渡すことができる「関数としての演算子」を提供するモジュールがあります。

>>> import operator
>>> operator.add
<function operator.add>

しかし、この場合、これは特に有用ではありません。

>>> help(operator.add)
add(...)
    add(a, b) -- Same as a + b.

ありがとう…</p>

幸い、このhelp関数には文字列を処理するための特別なコードがあります。ここで実際に必要なものについては、nneonneoの回答を参照してください。

于 2013-02-13T20:47:26.807 に答える
0

これは、+が演算子であり、2つのオペランドを考慮しているためです。これは、次のように実行できます。

help(1+1)

1 + 1はintを返すため、ヘルプはintデータ型に関する情報を提供します。

于 2013-02-13T20:43:46.643 に答える