58

関数がどのように実装されているかを見たかったmath.pyのですが、PyCharm でファイルを開くと、すべての関数が空で、単純なpass. 例えば:

def ceil(x): # real signature unknown; restored from __doc__
    """
    ceil(x)

    Return the ceiling of x as a float.
    This is the smallest integral value >= x.
    """
    pass

使われている関数が実際には C 標準ライブラリからのものだからだと思います。それはどのように機能しますか?

4

2 に答える 2

76

PyCharm はあなたに嘘をついています。あなたが見ているソースコードは、PyCharm が作成した偽物です。PyCharm はそこにあるべき関数を認識しており、関数のドキュメント文字列を使用してそれらのシグネチャを推測できますが、関数本体がどのように見えるべきかはわかりません。

実際のソース コードを見たい場合は、公式の Github リポジトリで見ることができますModules/mathmodule.c。そこにある関数の多くは、 の C 関数の周りにマクロで生成されたシン ラッパーですが、一貫性のない、または不十分な標準ライブラリの実装、同等の関数のない関数、および のようなカスタマイズ フックなどmath.hを処理するために手動で作成されたコードも多数あります。math.h__ceil__

于 2016-07-14T21:16:11.107 に答える