ホームページ  >  記事  >  バックエンド開発  >  文字列を使用して Python で関数やメソッドを呼び出す方法の例を共有する

文字列を使用して Python で関数やメソッドを呼び出す方法の例を共有する

黄舟
黄舟オリジナル
2017-08-04 10:42:161666ブラウズ

文字列はPythonでよく使われるデータ型であり、文字列の一般的なメソッドを習得することが非常に必要です。以下の記事ではPythonでの文字列による関数やメソッドの呼び出しに関する情報を中心に紹介していますので、困っている方はぜひ参考にしてみてください。

はじめに

この記事では、主に Python での文字列を使用した関数またはメソッドの呼び出しに関する関連内容を紹介します。参考と学習のために共有されています。

まず 1 つ見てみましょう 例:


>>> def foo():
    print "foo"

>>> def bar():
    print "bar"

>>> func_list = ["foo","bar"]
>>> for func in func_list:
    func()
TypeError: 'str' object is not callable

リスト内の関数を走査して実行したいと考えていますが、リストから取得した関数名は文字列であるため、型エラーが表示され、文字列オブジェクト呼び出すことはできません。文字列を呼び出し可能なオブジェクトにしたい場合はどうすればよいでしょうか?それとも、変数を通じてモジュール属性とクラス属性を呼び出しますか?

これを達成するには 3 つの方法があります。

eval()


>>> for func in func_list:
    eval(func)()
foo
bar

eval() は通常、文字列式を実行し、式の値を返すために使用されます。ここでは、文字列を対応する関数に変換します。 eval() は強力ですが危険であるため (eval は悪です)、推奨されません。

locals() と globals()


>>> for func in func_list:
    locals()[func]()
foo
bar
>>> for func in func_list:
    globals()[func]()
foo
bar

locals() と globals() は Python の 2 つの組み込み関数であり、これらを介して辞書内のローカル変数とグローバル変数にアクセスできます。

getattr()

getattr() は Python の組み込み関数です。getattr(object,name) は object.name と同等ですが、ここでは name を変数にすることができます。

fooモジュールのbarメソッドを返します


>>> import foo
>>> getattr(foo, 'bar')()

Fooクラスのプロパティを返します


>>> class Foo:
  def do_foo(self):
    ...
  def do_bar(self):
    ...
>>> f = getattr(foo_instance, 'do_' + opname)
>>> f()

概要

以上が文字列を使用して Python で関数やメソッドを呼び出す方法の例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。