ホームページ > バックエンド開発 > Python チュートリアル > Pythonでの文字列に基づく関数呼び出しの実装

Pythonでの文字列に基づく関数呼び出しの実装

高洛峰
リリース: 2017-03-03 13:54:01
オリジナル
1380 人が閲覧しました

Python では、文字列に基づいて関数を呼び出すことができます:

1. getattr を使用して文字列から関数を呼び出します

複数のプロセスで文字列が渡される可能性があるので、それを呼び出すにはどうすればよいですか?主に getattr 関数を使用します。この関数は、以下に示すように、文字列を使用してその文字列に対応する関数のオブジェクトを取得し、実行できます:

モジュールには 2 つの関数があります:

[root@python 530]# cat attr.py
#!/usr/bin/env python

def kel():
  print 'this is a kel function'


def smile():
  print 'this is a smile function'

if __name__ == '__main__':
  kel()
  smile()
ログイン後にコピー

上記の attr モジュールでは、2 つの関数が定義されています。1 つの関数は kel で、もう 1 つの関数は smile です。では、文字列 kel と smile に基づいて関数を実行するにはどうすればよいでしょうか。次のように getattr 関数を使用します。

>>> import attr
>>> k = getattr(attr,'kel')
>>> k()
this is a kel function
>>> s = getattr(attr,'smile')
>>> s()
this is a smile function
>>> e = getattr(attr,'errors')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: &#39;module&#39; object has no attribute &#39;errors&#39;
ログイン後にコピー

最初の例では、モジュールを直接インポートし、モジュールはオブジェクトなので、attr の kel() 関数は getattr の文字列 kel に従って取得され、最終的にここで実行が実装され、対応する関数が実装されます。異なる文字列に従って実行されます。

2. 辞書を使用して関数を呼び出す

上記のモジュールの定義は変更されませんが、以下に示すように、呼び出し時に辞書を定義し、辞書の値に基づいて関数を実行できます。

>>> import attr
>>> d = {&#39;kel&#39;:attr.kel,&#39;smile&#39;:attr.smile}
>>> d[&#39;kel&#39;]()
this is a kel function
>>> d[&#39;smile&#39;]()
this is a smile function
ログイン後にコピー

これにより、辞書の値を使用して関数を呼び出すことができます。

上記の 2 つのメソッドは主に、文字列が渡されたときに他の関数を呼び出す方法を知るために使用されます。1 つ目のメソッドは getattr を使用して関数を実行し、2 つ目のメソッドは辞書の値を事前に定義します。 。

Python で文字列に基づいて関数を呼び出す上記の実装方法は、エディターによって共有されたすべての内容ですので、参考になれば幸いです。また、PHP 中国語 Web サイトをサポートしていただければ幸いです。

Python での文字列に基づく関数呼び出しの実装に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート