La définition de la fonction Python est très simple, mais elle est très flexible. En plus des paramètres requis normalement définis, vous pouvez également utiliser des paramètres par défaut, des paramètres variables et des paramètres de mots-clés, de sorte que l'interface définie par la fonction puisse non seulement gérer des paramètres complexes, mais également simplifier le code de l'appelant.
Dans les fonctions Python, vous pouvez également définir des paramètres variables. Comme leur nom l'indique, les paramètres variables signifient que le nombre de paramètres transmis est variable, il peut être 1, 2 ou n'importe quel nombre, ou il peut être 0.
Cas : Veuillez calculer a2 + b2 + c2 + ….
Prenons comme exemple un problème de mathématiques, étant donné un ensemble de nombres a, b, c...,
Pour définir cette fonction, les paramètres d'entrée doivent être déterminés. Comme le nombre de paramètres est incertain, j'ai d'abord pensé que a, b, c... pouvaient être transmis sous forme de liste ou de tuple.
La fonction peut être définie comme suit :
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum
Mais lors de l'appel, vous devez d'abord assembler une liste ou un tuple :
print(calc([1, 2, 3])) #结果:14 print(calc((1, 3, 5, 7)) #结果:84
Code simplifié
Si vous utilisez des paramètres variables, la façon d'appeler une fonction peut être simplifiée comme suit :
Alors, changez les paramètres de la fonction en paramètres variables :
def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum
Par rapport à la définition d'un paramètre de liste ou de tuple , en définissant les paramètres variables, ajoutez simplement un signe * devant le paramètre.
À l'intérieur de la fonction, les numéros de paramètres reçoivent un tuple, le code de la fonction reste donc complètement inchangé. Cependant, lorsque vous appelez cette fonction, vous pouvez transmettre n'importe quel nombre de paramètres, y compris 0 paramètre :
print(calc(1, 2)) #结果:5 print(calc()) #结果:0
Et s'il existe déjà une liste ou un tuple et que vous souhaitez appeler un paramètre variable ?
例:
nums = [1, 2, 3] print(calc(nums[0], nums[1], nums[2]))
这种写法当然是可行的,问题是太繁琐。
所以Python允许在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
nums = [1, 2, 3] calc(*nums)
*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。
可变参数允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。
而关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:
def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw)
函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数:
person('Michael', 30)
运行结果:
也可以传入任意个数的关键字参数:
extra = {'city': 'Beijing', 'job': 'Engineer'} person('Jack', 24, **extra)
关键字参数有什么用?
它可以扩展函数的功能。
比如,在person函数里,保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,也能收到。
试想正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。
Cet article est basé sur les bases de Python et présente les paramètres des fonctions Python. Les fonctions de Python ont une forme de paramètre très flexible, qui peut non seulement implémenter des appels simples, mais également transmettre des paramètres très complexes. Des paramètres de variables communs et des paramètres de mots-clés sont introduits.
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!