Eleven, base de python: fonction d'utilisation de différents paramètres
1. Pourquoi les paramètres de la fonction?
Nous packagés en fonction du but est de rendre réutilisable, si vous voulez que votre fonction adapter à plus de cas, nous allons mettre de côté les paramètres d'une fonction qui permet des paramètres propres entrants de l'utilisateur, les besoins en traitement dans des conditions différentes .
2. Quels types de paramètres de la fonction?
En python, en fonction des paramètres peuvent être divisés dans les catégories suivantes:
paramètres de position, les paramètres de mots clés, le paramètre par défaut, le paramètre multi-valeur
2.1, les paramètres de localisation
def get_info(name, age, height):
print(name)
print(age, height)
Cette fonction ci-dessus get_info Il y a trois paramètres: nom, âge, taille.
Ils ne sont pas des paramètres de position, en fonction du temps que vous appelez, il est comment passer le Sénat.
Par exemple:
Quand on regarde l'appel, en fonction des paramètres de position pour passer l' argument est en quelque sorte de la façon dont
def get_info(name, age, height):
print(name)
print(age, height)
get_info('小明', 12, 180) # 正确调用方式
get_info(12, '小明', 180) # 错误调用方式,位置错了
get_info('小明', 12) # 错误调用方式,参数缺少了
Les paramètres positionnels Note:
1, en fonction des paramètres de position lorsqu'il est passé au Sénat, doit faire attention au mauvais endroit ne peut pas fonctionner autrement pour obtenir les données ne va pas.
2, le nombre de paramètres de position est ni plus ni moins, il existe 3 paramètres de position fonction définie, appeler la fonction de temps, il doit passer trois paramètres.
3, la définition d'une fonction, peu importe combien de types de paramètres, les paramètres de position sont toujours mis en avant d'autres types de paramètres.
2.2, arguments mot-clé
Si vous ne voulez pas afin de positionner le paramètre de la fonction passant, vous pouvez utiliser des arguments clés passé paramètres.
def get_info(name, age, height):
print(name)
print(age, height)
get_info(age=12, name='小明', height=180)
Selon ce mode de participation de masse de paires valeur clé, même si vous commandez le mauvais endroit n'a pas d'importance, tant que les mots-clés écrits sur la ligne, regardez la mise en œuvre des résultats:
2.3, les paramètres par défaut (paramètres par défaut)
Le paramètre par défaut est également appelé les paramètres par défaut, qui est, lorsque vous passez des paramètres, vous ne pouvez pas passer ce paramètre, la fonction elle-même fixeront une valeur par défaut, vous ne passez pas de paramètres aux valeurs par défaut.
Un paramètre ne sont pas les paramètres par défaut, et non sur la façon de passer des paramètres lorsque vous appelez, mais dépend de la définition, il n'y a pas de paramètres aux valeurs par défaut.
Nous changeons un peu au-dessus de la fonction, dans ce ci-dessous, à la hauteur d'une valeur par défaut de 180, lorsque vous l'appelez, nous pouvons passer des paramètres, vous ne pouvez pas passer, regardez les résultats
def get_info(name, age, height=180):
print(name)
print(age, height)
get_info(age=12, name='小明')
get_info(age=12, name='xiaoming', height=170)
Ou sortie normale, lorsque vous appelez s'il y a un paramètres par défaut pour passer des paramètres, il utilise les paramètres que vous passez, sinon, la valeur par défaut est définie lorsque la définition originale.
Remarque: Le paramètre par défaut doit être après les paramètres de position, nous vous montrons, à l'âge d'une valeur par défaut, au milieu, pour voir ce qui fonctionne.
def get_info(name, age=12, height):
print(name)
print(age, height)
get_info(12, 170)
Les résultats seront donnés:
2,4, multi-paramètre
Parfois, lorsque nous avons défini les fonctions, ce qui permet aux utilisateurs de transférer de nombreux paramètres, mais le nombre de paramètres est incertain, cette fois-ci, vous pouvez utiliser un paramètre à valeurs multiples.
Il existe deux types de représentation multi-paramètres, correspondant à différents types de transmission de données:
* args représente la réception d' un tuple, tuple de longueur ne se limite pas;
** kwargs représente la réception d' un dictionnaire, le dictionnaire ne se limite pas à la longueur;
def get_info(name, age, *args, **kwargs):
print(name, age)
print(*args)
print(**kwargs)
t = (123, 345)
d = {'phone': '156XXX'}
get_info('小明', 12, t, d)
Regardez les résultats:
Les résultats semblent en apparence ont fait mal, à droite.
Mais, en fait, il est un problème! ! !
Regardez à sa sortie, nous avons évidemment mis en place trois print (), imprimer le résultat devrait être de trois lignes en fonction, mais pourquoi seule la sortie des résultats de deux lignes? Mais il n'a pas imprimer le contenu manquant, toutes les sorties.
Il y a peu de besoin attention particulière en raison du problème causé par ce qui précède, est l'interprète vous passez deux paramètres t et d sont recueillis à l'intérieur * args, ** kwargs mais n'a pas les paramètres collectons, par conséquent, épuisé seulement deux lignes.
Solution:
Lorsque le passage de paramètres, respectivement, à deux paramètres plus symboles * et ** Un autre point à noter est que l' impression (** kwargs), voulait changer l'impression (kwargs) ou imprimer (* kwargs) , sinon il sera erreur.
def get_info(name, age, *args, **kwargs):
print(name, age)
print(*args)
print(*kwargs)
t = (123, 345)
d = {'phone': '1560000'}
get_info('小明', 12, *t, **d)
Regardez la sortie: en
fonction des paramètres de conseil:
attention à est préférable de ne pas utiliser un type variable de conteneur de données, comme paramètre par défaut, qui est une liste de ces dictionnaires, si vous ne vous plaindrez pas comme les paramètres par défaut, mais peut parfois causer une étrange question.
Le problème que j'ai un autre article dit expressément: