ホームページ > バックエンド開発 > Python チュートリアル > Python の関数およびメソッド呼び出しで括弧が重要になるのはどのような場合ですか?

Python の関数およびメソッド呼び出しで括弧が重要になるのはどのような場合ですか?

Susan Sarandon
リリース: 2024-11-29 02:43:11
オリジナル
682 人が閲覧しました

When Do Parentheses Matter in Python Function and Method Calls?

関数およびメソッド呼び出しの括弧省略を解く

Python では、関数とメソッドは第一級オブジェクトとして扱われます。これは、関数を変数に割り当てたり、他の関数に引数として渡したり、関数から返すこともできることを意味します。

ただし、関数またはメソッドを呼び出すときは、通常、my_func のようにその名前に括弧を追加します。 ()。ただし、かっこを省略した方が有益なシナリオもあります。

次のコードを考えてみましょう:

class objectTest():
    def __init__(self, a):
        self.value = a

    def get_value(self):
        return self.value

a = objectTest(1)
b = objectTest(1)
        
print(a == b)
print(a.get_value() == b.get_value)
print(a.get_value() == b.get_value())
print(a.get_value == b.get_value)
ログイン後にコピー

このコードの出力は次のとおりです:

False
False
True 
False
ログイン後にコピー

この不可解な結果は、get_value がメソッドであるにもかかわらず、最初に呼び出さずに変数のように使用しているという事実から生じています。これが可能なのは、関数名またはメソッド名を囲むかっこを省略すると、呼び出し可能オブジェクトと呼ばれる関数またはメソッド オブジェクト自体が返されるためです。

呼び出し可能オブジェクトは、かっこが追加されたときに特定のアクションを実行するために呼び出すことができるオブジェクトです。 。指定された例では、a.get_value は、オブジェクト a の get_value メソッドを表す呼び出し可能オブジェクトを参照します。

したがって、次の比較が行われます:

  • a == b : a と b のオブジェクト ID を比較します (False)
  • a.get_value() == b.get_value: a と b の get_value メソッドを呼び出して返された値を比較します (False)
  • a.get_value() == b.get_value(): a と b の get_value メソッドを呼び出して返された値を比較します (True) )
  • a.get_value == b.get_value: a と b の get_value メソッドを表す呼び出し可能オブジェクトを比較します。 (False)

括弧を省略すると、さまざまなシナリオで柔軟性が得られます:

  • 参照の受け渡し: 呼び出し可能オブジェクトを他の関数またはプロセスに渡す場合、括弧を省略するとかっこを使用すると、呼び出し可能オブジェクトが確実に渡されます。 Reference.
  • 動的呼び出し: 特定のコンテキスト (map() の使用など) では、呼び出し可能オブジェクトを指定して、それを動的に呼び出す必要があります。
  • 呼び出し可能なコレクション: コレクション内の呼び出し可能なコレクションを収集し、特定の条件に基づいてそれらを動的に取得できます。

関数やメソッドの呼び出しにおける括弧省略の動作を理解することで、Python プログラミングの可能性が広がります。

以上がPython の関数およびメソッド呼び出しで括弧が重要になるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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