11 cas allant de l'entrée au développement Python à la maîtrise expliquent en détail les paramètres de la fonction Python

Aujourd'hui, j'aimerais partager avec vous le contenu des paramètres Python. Le contenu est très sec. Le texte intégral comprend les points de connaissance sous forme de cas. Je pense que c'est mieux que 80% des articles sur Internet. Si vous Si vous débutez avec Python, faites confiance à ce livre. Cet article devrait vous être d'une grande aide.

Vient ensuite le texte.

  1. Classification des paramètres

Une fonction, une fois définie, peut avoir ou non des paramètres.

Du point de vue de la définition des fonctions, les paramètres peuvent être divisés en deux types :

Paramètres obligatoires : paramètres qui doivent être spécifiés lors de l'appel de la fonction, et il n'y a pas de signe égal lors de la définition

Paramètres facultatifs : également appelés paramètres par défaut, qui peuvent être spécifiés ou non lors de l'appel de la fonction. S'ils ne sont pas spécifiés, la valeur du paramètre par défaut sera utilisée.

Par exemple, dans le code suivant, a et b sont des paramètres obligatoires et c et d sont des paramètres facultatifs

def func(a,b,c=0, d=1) :

passer

Du point de vue des appels de fonction, les paramètres peuvent être divisés en deux types :

Paramètres de mots clés : lors de l'appel, utilisez la forme clé = valeur pour transmettre les paramètres, afin que les paramètres puissent être transmis hors de l'ordre de définition.

Paramètres de position : lors de l'appel, n'utilisez pas la forme clé-valeur des paramètres de mot-clé pour transmettre les paramètres, les paramètres doivent donc être transmis selon l'ordre des paramètres lorsque la fonction est définie.

def func(a,b,c=0, d=1) :

passer

Méthode de transmission des paramètres de mot-clé

fonction(a=10, c=30, b=20, d=40)

Méthode de passage des paramètres de position

fonction(10, 20, 30, 40)

Enfin, il existe un type très particulier de paramètre appelé paramètre variadique.

Cela signifie que le nombre de paramètres est variable, qui peut être 0 ou n'importe quel nombre, mais le nom du paramètre ne peut pas être spécifié lors du passage des paramètres, généralement exprimés par *args et **kw :

*args : Tous les paramètres reçus sous forme de paramètres positionnels sont de type tuple

**kw : Tous les paramètres reçus transmis en tant que paramètres de mot-clé sont de type dictionnaire

def func(*args, **kw):

imprimer (arguments)

imprimer (kw)

fonction(10, 20, c=20, d=40)

Le résultat est le suivant

(10, 20)

{'c' : 20, 'd' : 40}

2. Onze cas

Cas 1 : Dans la fonction suivante, a est un paramètre obligatoire et doit être précisé

def demo_func(a):

… imprimer(a)

… >>> demo_func(10)

dix

demo_func() # Si non spécifié, une erreur sera signalée

Traceback (dernier appel le plus récent) :

Fichier "", ligne 1, dans

TypeError : demo_func() manque 1 argument de position requis : 'a'

Cas 2 : Dans la fonction suivante, b est un paramètre facultatif (paramètre par défaut), qui peut être spécifié ou non. S'il n'est pas spécifié, la valeur par défaut est 10.

def demo_func(b=10) :

… imprimer(b)

démo_func(20)

20

démo_func()

dix

Cas 3 : Dans la fonction suivante, le nom et l'âge sont des paramètres obligatoires. Lors de l'appel des paramètres spécifiés, si vous n'utilisez pas de paramètres de mot-clé pour transmettre les paramètres, vous devez faire attention à l'ordre

def print_profile(nom, âge) :

… return f"Je m'appelle {name} et j'ai {age} ans cette année"

print_profile("iswbm", 27)

"Je m'appelle iswbm et j'ai 27 ans"

"Je m'appelle iswbm et j'ai 27 ans"

S'il y a trop de paramètres et que vous ne voulez pas prêter trop d'attention à l'ordre, vous pouvez utiliser des paramètres de mot-clé pour transmettre les paramètres et attacher le nom du paramètre lors de la spécification des paramètres, par exemple :

print_profile(age=27, name="iswbm")

"Je m'appelle iswbm et j'ai 27 ans"

Cas 4 : Dans la fonction suivante, le paramètre args n'est pas le même que le nom du paramètre ci-dessus. Il y a un * devant lui, ce qui indique qu'il s'agit d'un paramètre variable et qu'il peut recevoir n'importe quel nombre de paramètres sans spécifier le nom du paramètre. .

def demo_func(*args) :

… imprimer (arguments)

démo_func(10, 20, 30)

(10, 20, 30)

Cas 5 : Dans la fonction suivante, le paramètre kw et les *args ci-dessus en ont un de plus *, soit un total de deux **, ce qui signifie que kw est un paramètre de mot-clé variable qui peut recevoir n'importe quel nombre de paramètres avec le paramètre de noms de paramètres.

def demo_func(**kw):

… imprimer(kw)

demo_func(a=10, b=20, c=30)

{'a' : 10, 'b' : 20, 'c' : 30}

Cas 6 : Lors de la définition, les paramètres requis doivent être devant les paramètres facultatifs, sinon une erreur sera signalée à l'exécution.

def demo_func(a=1, b):

… imprimer(a, b)

… Fichier « », ligne 1

SyntaxError : l'argument autre que celui par défaut suit l'argument par défaut

def demo_func(a, b=1) :

… imprimer(a, b)

Cas 7 : lors de la définition, les paramètres de position variables doivent précéder les paramètres de mots-clés variables, sinon une erreur sera signalée au moment de l'exécution.

def demo_func(**kw, *args) :

Fichier « », ligne 1

def demo_func(**kw, *args) :

^

ErreurDeSyntaxe: Syntaxe invalide

def demo_func(*args, **kw):

… imprimer (arguments, kw)

Cas 8 : Les paramètres de position variable peuvent être placés devant les paramètres obligatoires, mais lors de l'appel, les paramètres obligatoires doivent spécifier le nom du paramètre à transmettre, sinon une erreur sera signalée

def demo_func(*args, b):

… imprimer (arguments)

… imprimer(b)

démo_func(1, 2, 100)

Traceback (dernier appel le plus récent) :

Fichier "", ligne 1, dans

TypeError : demo_func() manque 1 argument de mot-clé obligatoire uniquement : 'b'

démo_func(1, 2, b=100)

(1, 2)

100

Cas 9 : Le paramètre mot-clé variable est différent. Le paramètre mot-clé variable doit être placé à la fin. Dans les trois exemples suivants, peu importe que le paramètre mot-clé soit suivi d'un paramètre positionnel, ou d'un paramètre par défaut, ou d'un paramètre variable, une erreur sera signalée.

def demo_func(**kw, a) :

Fichier « », ligne 1

def demo_func(**kw, a) :

^

ErreurDeSyntaxe: Syntaxe invalide

def demo_func(**kw, a=1) :

Fichier « », ligne 1

def demo_func(**kw, a=1) :

^

ErreurDeSyntaxe: Syntaxe invalide

def demo_func(**kw, *args) :

Fichier « », ligne 1

def demo_func(**kw, *args) :

^

ErreurDeSyntaxe: Syntaxe invalide

Cas 10 : En combinant les points de connaissance ci-dessus, les quatre types de paramètres peuvent apparaître dans une seule fonction, mais il faut faire attention à l'ordre

def demo_func(arg1, arg2=10, *args, **kw) :

imprimer("arg1: ", arg1)

imprimer("arg2: ", arg2)

print("arguments : ", arguments)

print("kw: ", kW)

Essayez d'appeler cette fonction, le résultat est le suivant :

demo_func(1,12, 100, 200, d=1000, e=2000)

argument1:1

argument2 : 12

arguments : (100, 200)

kW : {'d' : 1000, 'e' : 2000}

Cas 11 : utilisez un seul *. Lorsque vous transmettez les paramètres de position ultérieurement, des exigences strictes s'appliquent à la façon dont vous transmettez les paramètres. Lorsque vous transmettez les paramètres, vous devez transmettre les paramètres sous la forme de paramètres de mot-clé et vous devez écrire le nom du paramètre, sinon une erreur sera signalée.

def demo_func(a, b, *, c) :

… imprimer(a)

… imprimer(b)

… imprimer©

démo_func(1, 2, 3)

Traceback (dernier appel le plus récent) :

Fichier "", ligne 1, dans

TypeError : demo_func() prend 2 arguments de position mais 3 ont été donnés

démo_func(1, 2, c=3)

1

2

3

  1. Passer la fosse des paramètres

Le paramètre de fonction reçoit l'adresse mémoire de l'objet réel. Si le paramètre est un type de données de type référence (liste, dictionnaire, etc.), après modification à l'intérieur de la fonction, même si la valeur modifiée n'est pas renvoyée, la valeur à l'extérieur a effectivement changé.

def add_item(élément, liste_source) :

… source_list.append(élément)

liste = [0,1]

add_item(2, liste)

grandi

[0, 1, 2]

Source de l'article : Les droits d'auteur du réseau appartiennent à l'auteur original

Le contenu ci-dessus n'est pas à des fins commerciales, s'il implique des problèmes de propriété intellectuelle, veuillez contacter l'éditeur, nous nous en occuperons immédiatement

Je suppose que tu aimes

Origine blog.csdn.net/xuezhangmen/article/details/132291276
conseillé
Classement