web-dev-qa-db-ja.com

Python関数を実行せずに存在するかどうかを確認します

pythonでは、実際に関数を実行せずに(つまり、tryを使用して)関数が存在するかどうかをどのように確認しますか?モジュールに存在するかどうかをテストします。

26
Josh Wood

dir を使用して、名前がモジュール内にあるかどうかを確認できます。

>>> import os
>>> "walk" in dir(os)
True
>>>

上記のサンプルコードでは、 os.walk 関数。

28
iCodez

tryexceptを提案しました。あなたは確かにそれを使うことができます:

try:
    variable
except NameError:
    print("Not in scope!")
else:
    print("In scope!")

これにより、variableがスコープ内にあるかどうかが確認されます(関数は呼び出されません)。

11
rlms
Solution1:
import inspect
if (hasattr(m, 'f') and inspect.isfunction(m.f))

Solution2:
import inspect
if ('f' in dir(m) and inspect.isfunction(m.f))

どこ:
m =モジュール名
f = mで定義された関数

8
Paula Cogeanu

関数がパッケージに存在するかどうかを確認する場合:

import pkg

print("method" in dir(pkg))

スクリプト/名前空間に関数が存在するかどうかを確認している場合:

def hello():
    print("hello")

print("hello" in dir())
0
openwonk

クラスで関数を探している場合は、「__ dict__」オプションを使用できます。たとえば、「some_class」の関数「some_function」が次のことを行うかどうかを確認します。

if "some_function" in list(some_class.__dict__.keys()):
    print('Function {} found'.format ("some_function"))
0
kenisam