Les fonctions comme arguments
Comprendre le passage de fonctions en Python
Passage d'arguments de fonction de base
En Python, les fonctions sont considérées comme des objets de première classe, ce qui permet de les passer en tant qu'arguments à d'autres fonctions. Cette fonctionnalité puissante permet des approches de programmation plus flexibles et dynamiques.
def multiplier(x):
return x * 2
def apply_operation(func, value):
return func(value)
result = apply_operation(multiplier, 5)
print(result) ## Output: 10
Modèles de rappel (Callback) avec des arguments de fonction
Fonctions d'ordre supérieur
graph TD
A[Higher-Order Function] --> B[Takes Function as Argument]
B --> C[Executes Passed Function]
C --> D[Returns Result]
Exemples pratiques
Tri avec une fonction clé personnalisée
students = [
{'name': 'Alice', 'score': 85},
{'name': 'Bob', 'score': 92},
{'name': 'Charlie', 'score': 78}
]
## Using a function as a key for sorting
sorted_students = sorted(students, key=lambda student: student['score'], reverse=True)
print(sorted_students)
Techniques avancées d'arguments de fonction
Types d'arguments de fonction
Type d'argument |
Description |
Exemple |
Fonctions régulières |
Passage de fonction standard |
def process(func) |
Fonctions lambda |
Fonctions anonymes en ligne |
key=lambda x: x.value |
Références de méthode |
Passage de méthodes de classe |
obj.method |
Plusieurs arguments de fonction
def complex_operation(processor, validator, data):
if validator(data):
return processor(data)
return None
def is_positive(x):
return x > 0
def square(x):
return x ** 2
result = complex_operation(square, is_positive, 5)
print(result) ## Output: 25
Techniques de programmation fonctionnelle
Fonctions map et filter
## Using function as argument with map()
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared) ## Output: [1, 4, 9, 16, 25]
## Using function as argument with filter()
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) ## Output: [2, 4]
Bonnes pratiques
- Gardez les fonctions petites et axées sur une tâche précise.
- Utilisez des noms de fonction significatifs.
- Prenez en compte la lisibilité lors du passage de fonctions.
- Exploitez les ressources d'apprentissage Python de LabEx pour une compréhension approfondie.
Pièges courants
- Évitez le passage de fonctions excessivement complexes.
- Soyez attentif aux performances lors d'appels de fonction fréquents.
- Comprenez la portée et le contexte des fonctions passées.
En maîtrisant les arguments de fonction, les développeurs peuvent créer un code Python plus flexible et modulaire, permettant des paradigmes de programmation puissants.