Maison > développement back-end > Tutoriel Python > Quand les parenthèses sont-elles importantes dans les appels de fonctions et de méthodes Python ?

Quand les parenthèses sont-elles importantes dans les appels de fonctions et de méthodes Python ?

Susan Sarandon
Libérer: 2024-11-29 02:43:11
original
701 Les gens l'ont consulté

When Do Parentheses Matter in Python Function and Method Calls?

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

En Python, les fonctions et les méthodes sont traitées comme des objets de première classe. Cela signifie qu'ils peuvent être attribués à des variables, passés comme arguments à d'autres fonctions et même renvoyés par des fonctions.

Cependant, lorsque nous appelons une fonction ou une méthode, nous ajoutons généralement des parenthèses à son nom, comme my_func (). Cependant, il existe certains scénarios dans lesquels l'omission des parenthèses peut être bénéfique.

Considérez le code suivant :

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

La sortie de ce code est :

False
False
True 
False
Copier après la connexion

Ce résultat déroutant vient du fait que get_value est une méthode, et pourtant nous l'utilisons comme une variable sans l'appeler au préalable. Ceci est possible car l'omission des parenthèses autour d'un nom de fonction ou de méthode renvoie l'objet de fonction ou de méthode lui-même, appelé appelable.

Un appelable est un objet qui peut être appelé pour exécuter une action spécifique lorsque des parenthèses sont ajoutées. . Dans l'exemple donné, a.get_value fait référence à un objet appelable représentant la méthode get_value de l'objet a.

Par conséquent, les comparaisons suivantes sont effectuées :

  • a == b : Compare les identités d'objet de a et b (False)
  • a.get_value() == b.get_value : Compare les valeurs renvoyées en appelant la méthode get_value de a et b (False)
  • a.get_value() == b.get_value() : Compare les valeurs renvoyées en appelant la méthode get_value de a et b (True)
  • a.get_value == b.get_value : Compare les objets appelables représentant les méthodes get_value de a et b (Faux)

L'omission des parenthèses nous offre une flexibilité dans divers scénarios :

  • Passer des références : Lors du passage d'appelables à d'autres fonctions ou processus, en omettant les parenthèses garantissent que l'appelable est passé en tant que référence.
  • Appel dynamique : Dans certains contextes, comme l'utilisation de map(), nous devons spécifier un appelable et le laisser être appelé dynamiquement.
  • Collections appelables : Nous pouvons collecter des éléments appelables dans une collection et les récupérer dynamiquement en fonction de données spécifiques. critères.

En comprenant le comportement de l'omission des parenthèses dans les appels de fonctions et de méthodes, nous élargissons nos possibilités en programmation Python.

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!

source:php.cn
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