私は数字のリストを持っています。私は、(例えば)第1項と第2項のために、私のインポートしたmath
モジュールのすべての機能を実行したいと思います。モジュールのすべての機能を介在させる方法はありますか?
import math
list = [1, 2, 3]
#do stuff that will print (for example) 2+1, 2-1, 2/1, etc.
私は数字のリストを持っています。私は、(例えば)第1項と第2項のために、私のインポートしたmath
モジュールのすべての機能を実行したいと思います。モジュールのすべての機能を介在させる方法はありますか?
import math
list = [1, 2, 3]
#do stuff that will print (for example) 2+1, 2-1, 2/1, etc.
@Alex Hallの答えに基づいて、1つの引数を取る関数に2つのパラメータを渡すことを避けるために、例外処理を追加したいと思います。
for name in dir(math):
item = getattr(math, name)
if callable(item):
try:
item(list[0], list[1])
# The function does not take two arguments or there is any other problem.
except TypeError:
print(item, "does not take two arguments.")
ここには簡単な方法があります。関数が2つの引数を必要としない場合の動作を指定する必要があります。
for name in dir(math):
item = getattr(math, name)
if callable(item):
item(list[0], list[1])
あなた自身の数学モジュールをお持ちの場合、Pythonには既に標準的な数学モジュールがあるため、「数学」という名前を付けないでください。混乱やPython数学モジュールとの競合を避けるため、もっとユニークな名前を付けてください。
第二に、Pythonのを見て、モジュール内から関数のリストを取得するには、モジュールを「検査」 - >https://docs.python.org/2/library/inspect.html#inspect.getmembers
import inspect
import myMathModule
for name, member in inspect.getmembers(myMathModule):
print name, 'is function', inspect.isfunction(member)
また2、彼らが言う受け入れることを確認するために、関数の引数を検査することができますあなたのリストから引数を取り除くか、フィルタリングします。しかし、これはプロダクションコードで使うのは良い考えではないと思います。多分あなたがそれがうまくいくかどうかをテストするかもしれません。さもなければ、モジュール内の関数ではなく引き出す関数名のリストを使用します。
私はPythonの数学モジュールをインポートしています。私はinspectモジュールを使ってすべての関数をリストすることができますが、それらの関数を実行したかったので、そうすることができる特定のコードがあるかどうか疑問に思っていました。 – mkpappu
私の例のように呼び出すことができますが、tryを使って呼び出す前に関数が必要とする引数をテストしたい場合があります。 メンバー(1,2) – scottiedoo
「私のインポートされた数学モジュール」ではなく、 – scottiedoo
[モジュールの機能を反復処理する方法]の可能な重複(http://stackoverflow.com/questions/21885814/how-to-iterate-through-a-modules-functions:ここで変更されたコードです) – James