18

私はPythonプログラミングに不慣れです。CまたはC++を使用してPythonインタープリターに新しい組み込み関数とキーワードを追加するにはどうすればよいですか?

4

4 に答える 4

28

要するに、Python のビルトイン †</sup> に何かを追加することは技術的に可能ですが、それが必要になることはほとんどありません (そして一般的に非常に悪い考えと考えられています)。

より長期的には、Python のソースを変更し、新しいビルトインやキーワードなどを追加することは明らかに可能ですが、それを行うプロセスは、現状では問題の範囲から少し外れています。

Python ソースの変更方法、Python から呼び出すことができる C 関数の作成方法、またはその他の詳細について知りたい場合は、質問を編集してより具体的にしてください。

あなたが Python プログラミングに不慣れで、日々の作業でコア言語を変更する必要があると感じている場合、それはおそらくそれについてもっと学ぶべきであるという指標です。Python は、膨大な数の問題領域で変更されずに使用されています (たとえば、numpyは科学計算を容易にする拡張機能であり、Blenderはそれを 3D アニメーションに使用しています)。そのため、この言語でも問題領域を処理できる可能性があります。

†:モジュール変更し__builtin__て「新しいビルトインを追加」できます… しかし、これはほとんど間違いなく悪い考えです: モジュールに依存するコードは、元のアプリケーションのコンテキスト外で使用することが非常に困難 (かつ混乱) になります。たとえば、greater_than_zero「ビルトイン」を追加した場合、それを別の場所で使用することを検討してください。

$ cat foo.py
import __builtin__
__builtin__.greater_than_zero = lambda x: x > 0

def foo(x):
    if greater_than_zero(x):
        return "greater"
    return "smaller"

そのコードを読み取ろうとする人は、 がどこで定義されているかわからないため混乱し、侵入しgreater_than_zeroていないアプリケーションからそのコードを使用しようとする人は、そのコードを使用できなくなります。greater_than_zero__builtin__

より良い方法は、Python の既存のimportステートメントを使用することです: http://docs.python.org/tutorial/modules.html

于 2011-08-06T06:02:30.457 に答える