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
Libérer: 2024-11-29 02:36:09
original
904 Les gens l'ont consulté

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)
Copier après la connexion

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'])
Copier après la connexion

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)
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal