Python >> Tutoriel Python >  >> Python

Définition de la fonction Python sur une ligne

Une fonction lambda permet de définir une fonction sur une seule ligne. Il commence par le mot-clé lambda , suivi d'une liste de zéro ou plusieurs arguments séparés par des virgules, suivis des deux-points et de l'expression de retour. Par exemple, lambda x, y: x+y calcule la somme des valeurs des deux arguments x+y dans une ligne de code Python.

Problème :Comment définir une fonction dans une seule ligne de code Python ?

Exemple :Supposons que vous ayez la fonction suivante en trois lignes. Comment les compresser en une seule ligne de code Python ?

def say_hi(*friends):
    for friend in friends:
        print('hi', friend)

friends = ['Alice', 'Bob', 'Ann']
say_hi(*friends)

Le code définit une fonction say_hi qui prend un itérable en entrée—les noms de vos amis—et imprime 'hi x' pour chaque élément x dans votre itérable.

La sortie est :

'''
hi Alice
hi Bob
hi Ann
'''

Plongeons dans les différentes méthodes pour y parvenir ! Tout d'abord, voici un bref aperçu interactif pour tâter le terrain :

Exercice  :Exécutez le code :le résultat est-il le même pour les quatre méthodes ?

Ensuite, vous découvrirez chaque méthode plus en détail !

Méthode 1 :Fonction Lambda

Vous pouvez utiliser une simple fonction lambda pour y parvenir.

Une fonction lambda est une fonction anonyme en Python. Il commence par le mot-clé lambda , suivi d'une liste de zéro ou plusieurs arguments séparés par des virgules, suivis des deux-points et de l'expression de retour. Par exemple, lambda x, y, z: x+y+z calculerait la somme des trois valeurs d'argument x+y+z .

friends = ['Alice', 'Bob', 'Ann']

# Method 1: Lambda Function
hi = lambda lst: [print('hi', x) for x in lst]

Dans l'exemple, vous souhaitez imprimer une chaîne pour chaque élément d'un itérable, mais la fonction lambda ne renvoie qu'un objet. Ainsi, nous renvoyons un objet factice :une liste de None objets. Le seul but de créer cette liste est d'exécuter la fonction print() à plusieurs reprises, pour chaque élément du friends liste.

Vous obtenez le résultat suivant :

hi(friends)
'''
hi Alice
hi Bob
hi Ann
'''

Méthode 2 :Définition de la fonction

Une idée similaire est employée dans cet exemple à une ligne, mais au lieu d'utiliser une fonction lambda, nous définissons une fonction régulière et sautons simplement la nouvelle ligne. Ceci est possible si le corps de la fonction n'a qu'une seule expression :

friends = ['Alice', 'Bob', 'Ann']

# Method 2: Function Definition
def hi(lst): [print('hi', x) for x in lst]

Le résultat est le même qu'avant :

hi(friends)
'''
hi Alice
hi Bob
hi Ann
'''

Cette approche est plus pythonique que la première car il n'y a pas de valeur de retour jetable et elle est plus concise.

Méthode 3 :exec()

La troisième méthode utilise le exec() fonction. C'est l'approche de la force brute pour unifier n'importe quel multiligne !

Pour créer une ligne Python à partir de n'importe quel script Python multiligne, remplacez les nouvelles lignes par un nouveau caractère de ligne '\n' et passez le résultat dans le exec(...) fonction. Vous pouvez exécuter ce script depuis l'extérieur (ligne de commande, shell, terminal) en utilisant la commande python -c "exec(...)" .

Nous pouvons appliquer cette technique au premier exemple d'extrait de code (la définition de la fonction multiligne) et renommer les variables pour le rendre plus concis :

friends = ['Alice', 'Bob', 'Ann']

# Method 3: exec()
exec("def hi(*lst):\n    for x in lst:\n        print('hi', x)\nhi(*friends)")

Si vous exécutez le code, vous verrez le même résultat qu'avant :

hi(friends)
'''
hi Alice
hi Bob
hi Ann
'''

C'est très difficile à lire - notre cerveau ne peut pas saisir facilement les espaces et les caractères de retour à la ligne. Mais je voulais quand même inclure cette méthode ici car elle montre comment vous ou n'importe qui d'autre pouvez compresser des algorithmes compliqués en une seule ligne de code Python !

Regardez la vidéo si vous souhaitez en savoir plus sur cette technique :

Humour de programmeur

Livre Python One-Liners :maîtrisez d'abord la ligne unique !

Les programmeurs Python amélioreront leurs compétences en informatique avec ces lignes utiles.

Python One-Liners vous apprendra à lire et à écrire des « lignes simples » :des déclarations concises de fonctionnalités utiles regroupées dans une seule ligne de code. Vous apprendrez à décompresser et à comprendre systématiquement n'importe quelle ligne de code Python, et à écrire du Python éloquent et puissamment compressé comme un expert.

Les cinq chapitres du livre couvrent (1) les trucs et astuces, (2) les expressions régulières, (3) l'apprentissage automatique, (4) les principaux sujets de science des données et (5) les algorithmes utiles.

Des explications détaillées des one-liners introduisent les concepts clés de l'informatique etdéveloppez vos compétences en matière de codage et d'analyse . Vous découvrirez les fonctionnalités Python avancées telles que la compréhension de liste , tranchage , fonctions lambda , expressions régulières , carte et réduire fonctions et affectations de tranches .

Vous apprendrez également à :

  • Exploiter les structures de données pour résoudre des problèmes réels , comme utiliser l'indexation booléenne pour trouver des villes avec une pollution supérieure à la moyenne
  • Utiliser les bases de NumPy comme tableau , forme , axe , tapez , diffusion , indexation avancée , tranchage , tri , recherche , agrégation , et statistiques
  • Calculer des statistiques de base de tableaux de données multidimensionnels et les algorithmes K-Means pour l'apprentissage non supervisé
  • Créer davantage d'expressions régulières avancées en utilisant le regroupement et groupes nommés , anticipations négatives , caractères échappés , espaces blancs, jeux de caractères (et jeux de caractères négatifs ) et opérateurs gourmands/non gourmands
  • Comprendre un large éventail de sujets informatiques , y compris les anagrammes , palindromes , surensembles , permutations , factorielles , nombres premiers , Fibonacci chiffres, obscurcissement , recherche , et tri algorithmique

À la fin du livre, vous saurez comment écrire Python dans sa forme la plus raffinée , et créez de belles pièces concises d'"art Python" en une seule ligne.

Obtenez vos Python One-Liners sur Amazon !!


Post précédent
Prochain article