Maison >développement back-end >Tutoriel Python >Quand l'omission des parenthèses est-elle autorisée dans les appels de fonctions et de méthodes Python ?

Quand l'omission des parenthèses est-elle autorisée dans les appels de fonctions et de méthodes Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-29 02:36:09891parcourir

When is Parentheses Omission Allowed in Python Function and Method Calls?

Comprendre l'omission des parenthèses dans les appels de fonctions et de méthodes

En Python, les fonctions et les méthodes sont considérées comme des objets de première classe, ce qui signifie qu'elles peuvent être traitées comme n'importe quel autre type de données. Cependant, un aspect unique des objets de première classe est la possibilité de les utiliser sans parenthèses.

Explication de l'exemple de code

L'extrait de code fourni initialise deux instances de objectTest classe, a et b, avec la même valeur. La sortie montre que :

  • a == b est évalué à False car ce sont des objets différents.
  • a.get_value() == b.get_value est évalué à True car ils renvoient le même valeur.
  • a.get_value() == b.get_value() est également évalué à True pour la même valeur. raison.

Omission des parenthèses

Le résultat surprenant est la dernière expression, a.get_value == b.get_value. Cela donne la valeur False même si get_value est la même méthode pour les deux objets. Cela se produit car sans parenthèses, nous n'appelons pas la méthode mais accédons plutôt à l'objet fonction lui-même.

Pourquoi l'omission est autorisée

Python autorise l'omission des parenthèses car cela fournit un moyen concis de transmettre une référence à l'appelable (fonction ou méthode) lui-même. Ceci est particulièrement utile dans plusieurs situations :

Utilisation des rappels :

Les rappels sont des fonctions ou des méthodes qui sont transmises à une autre fonction pour être exécutées ultérieurement. L'omission des parenthèses permet de transmettre la référence de rappel, comme le montre l'exemple de multitraitement :

t = Process(target=my_long_running_function)

Fonctions de mappage :

Lors de l'utilisation de la fonction map, vous pouvez passer un appelable sans parenthèses pour renseigner ses arguments :

map(do_something, ['hey', 'what up', 'yo'])

Dynamique Invocation :

L'omission des parenthèses permet une invocation dynamique, où vous pouvez récupérer et exécuter l'appelable souhaité à partir d'une collection :

str_ops = {'<': lt, '>': gt, '==': eq}
op = str_ops.get(my_operator)
if op:
    result = op(lhs, rhs)

En résumé, l'omission des parenthèses lors de l'appel de fonctions ou de méthodes permet pour le passage efficace des références à l'appelable lui-même, permettant diverses fonctionnalités telles que les rappels, l'invocation dynamique et le mappage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn