Fonctions Python3
Une fonction est un segment de code organisé et réutilisable utilisé pour implémenter une fonction unique ou associée. Les fonctions
peuvent améliorer la modularité des applications et la réutilisation du code. Vous savez déjà que Python fournit de nombreuses fonctions intégrées, telles que print(). Mais vous pouvez également créer vos propres fonctions, appelées fonctions définies par l'utilisateur.
Définir une fonction
Vous pouvez définir une fonction avec la fonction que vous souhaitez, voici les règles simples :
Code de fonction A Le bloc commence par le mot-clé def, suivi du nom de l'identifiant de la fonction et des parenthèses ().
Tous les paramètres entrants et variables indépendantes doivent être placés entre parenthèses, et les espaces entre parenthèses peuvent être utilisés pour définir les paramètres.
La première ligne d'une fonction peut éventuellement utiliser une docstring - utilisée pour stocker les descriptions de fonctions.
Le contenu de la fonction commence par deux points et est en retrait.
return [expression] Termine la fonction, renvoyant éventuellement une valeur à l'appelant. Renvoyer sans expression équivaut à renvoyer Aucun.
Syntaxe
Python définit les fonctions à l'aide du mot clé def, le format général est le suivant :
def 函数名(参数列表): 函数体
Par défaut, les valeurs des paramètres et noms de paramètres Ils correspondent dans l'ordre défini dans la déclaration de fonction.
Exemple
Utilisons une fonction pour afficher "Hello World!":
>>> def hello() : print("Hello World!") >>> hello() Hello World! >>>
Pour une application plus complexe, apportez des variables de paramètre dans la fonction:
#!/usr/bin/python3 # 计算面积函数 def area(width, height): return width * height def print_welcome(name): print("Welcome", name) print_welcome("php") w = 4 h = 5 print("width =", w, " height =", h, " area =", area(w, h))
Résultat de sortie de l'exemple ci-dessus :
Welcome php width = 4 height = 5 area = 20
Appel de fonction
Définir une fonction : donner un nom à la fonction, spécifier les paramètres contenus dans la fonction et le bloc de code structure.
Une fois la structure de base de cette fonction terminée, vous pouvez l'exécuter via un autre appel de fonction ou directement à partir de l'invite de commande Python.
L'exemple suivant appelle la fonction printme() :
#!/usr/bin/python3 # 定义函数 def printme( str ): "打印任何传入的字符串" print (str); return; # 调用函数 printme("我要调用用户自定义函数!"); printme("再次调用同一函数");
Le résultat de sortie de l'exemple ci-dessus :
我要调用用户自定义函数! 再次调用同一函数
Passer des paramètres par valeur et passer des paramètres par référence
En Python, tous les paramètres (variables) sont passés par référence. Si vous modifiez les paramètres dans la fonction, les paramètres d'origine seront également modifiés dans la fonction qui appelle cette fonction. Par exemple :
#!/usr/bin/python3 # 可写函数说明 def changeme( mylist ): "修改传入的列表" mylist.append([1,2,3,4]); print ("函数内取值: ", mylist) return # 调用changeme函数 mylist = [10,20,30]; changeme( mylist ); print ("函数外取值: ", mylist)
L'objet passé dans la fonction et l'objet pour ajouter du nouveau contenu à la fin utilisent la même référence. Par conséquent, le résultat est le suivant :
函数内取值: [10, 20, 30, [1, 2, 3, 4]] 函数外取值: [10, 20, 30, [1, 2, 3, 4]]
Paramètres
Voici les types de paramètres formels qui peuvent être utilisés lors de l'appel de fonctions :
Paramètres requis
Paramètres des mots clés
Paramètres par défaut
Paramètres de longueur variable
Paramètres requis
Les paramètres requis doivent être transmis à la fonction dans le bon ordre. La quantité au moment de l'appel doit être la même que lors de la déclaration.
Lors de l'appel de la fonction printme(), vous devez passer un paramètre, sinon une erreur de syntaxe se produira :
#!/usr/bin/python3 #可写函数说明 def printme( str ): "打印任何传入的字符串" print (str); return; #调用printme函数 printme();
Le résultat de sortie de l'exemple ci-dessus :
Traceback (most recent call last): File "test.py", line 10, in <module> printme(); TypeError: printme() missing 1 required positional argument: 'str'
Paramètres de mots-clés
Les paramètres de mots-clés sont étroitement liés aux appels de fonction. Les appels de fonction utilisent des paramètres de mots-clés pour déterminer les valeurs des paramètres transmises.
L'utilisation d'arguments de mots clés permet à la fonction d'être appelée dans un ordre différent de celui lors de sa déclaration, car l'interpréteur Python est capable de faire correspondre les noms de paramètres avec les valeurs des paramètres.
Les exemples suivants utilisent des noms de paramètres lors de l'appel de la fonction printme() :
#!/usr/bin/python3 #可写函数说明 def printme( str ): "打印任何传入的字符串" print (str); return; #调用printme函数 printme( str = "php中文网");
Les résultats de sortie des exemples ci-dessus :
php中文网
Les exemples suivants démontrent l'utilisation des paramètres de fonction et n'ont pas besoin d'être utilisés Précisez l'ordre :
#!/usr/bin/python3 #可写函数说明 def printinfo( name, age ): "打印任何传入的字符串" print ("名字: ", name); print ("年龄: ", age); return; #调用printinfo函数 printinfo( age=50, name="php" );
Résultat de sortie de l'exemple ci-dessus :
名字: php 年龄: 50
Paramètres par défaut
Lors de l'appel de la fonction, si aucun paramètre n'est transmis , les paramètres par défaut seront utilisés. Dans l'exemple suivant, si le paramètre age n'est pas transmis, la valeur par défaut est utilisée :
#!/usr/bin/python3 #可写函数说明 def printinfo( name, age = 35 ): "打印任何传入的字符串" print ("名字: ", name); print ("年龄: ", age); return; #调用printinfo函数 printinfo( age=50, name="php" ); print ("------------------------") printinfo( name="php" );
Le résultat de sortie de l'exemple ci-dessus :
名字: php 年龄: 50 ------------------------ 名字: php 年龄: 35
Paramètre de longueur variable
Vous aurez peut-être besoin d'une fonction pour gérer Plus de paramètres que ceux initialement déclarés. Ces paramètres sont appelés paramètres de longueur variable. Contrairement aux deux paramètres ci-dessus, ils ne seront pas nommés lors de leur déclaration. La syntaxe de base est la suivante :
def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串" function_suite return [expression]
Les noms de variables avec un astérisque (*) stockeront tous les paramètres de variables sans nom. Si aucun paramètre n'est spécifié lors de l'appel de la fonction, il s'agit d'un tuple vide. Nous ne pouvons pas non plus transmettre de variables sans nom à la fonction. L'exemple suivant :
#!/usr/bin/python3 # 可写函数说明 def printinfo( arg1, *vartuple ): "打印任何传入的参数" print ("输出: ") print (arg1) for var in vartuple: print (var) return; # 调用printinfo 函数 printinfo( 10 ); printinfo( 70, 60, 50 );
Le résultat de sortie de l'exemple ci-dessus :
输出: 10 输出: 70 60 50
Fonction anonyme
Python utilise lambda pour créer des fonctions anonymes.
Le soi-disant anonyme signifie que vous n'utilisez plus la forme standard d'instruction def pour définir une fonction.
lambda n'est qu'une expression, et la fonction body est beaucoup plus simple que def.
Le corps de lambda est une expression, pas un bloc de code. Seule une logique limitée peut être encapsulée dans des expressions lambda.
La fonction lambda a son propre espace de noms et ne peut pas accéder aux paramètres en dehors de sa propre liste de paramètres ou dans l'espace de noms global.
Bien que la fonction lambda semble pouvoir écrire une seule ligne, elle n'est pas équivalente à la fonction inline du C ou du C++. Le but de cette dernière est d'appeler une petite fonction. sans occuper la mémoire de la pile et augmenter ainsi l'efficacité du temps d'exécution.
Syntaxe
La syntaxe de la fonction lambda ne contient qu'une seule instruction, comme suit :
lambda [arg1 [,arg2,.....argn]]:expression
L'exemple suivant :
#!/usr/bin/python3 # 可写函数说明 sum = lambda arg1, arg2: arg1 + arg2; # 调用sum函数 print ("相加后的值为 : ", sum( 10, 20 )) print ("相加后的值为 : ", sum( 20, 20 ))
L'exemple de résultat ci-dessus Résultat :
相加后的值为 : 30 相加后的值为 : 40
instruction return
return [expression] L'instruction est utilisée pour quitter la fonction, renvoyant éventuellement une expression au demandeur. Une instruction return sans valeurs de paramètres renvoie None. Les exemples précédents n'ont pas montré comment renvoyer une valeur. L'exemple suivant montre l'utilisation de l'instruction return :
#!/usr/bin/python3 # 可写函数说明 def sum( arg1, arg2 ): # 返回2个参数的和." total = arg1 + arg2 print ("函数内 : ", total) return total; # 调用sum函数 total = sum( 10, 20 ); print ("函数外 : ", total)
Le résultat de sortie de l'exemple ci-dessus :
函数内 : 30 函数外 : 30
Portée variable
En Python, les variables du programme ne sont pas accessibles depuis tous les emplacements. Les autorisations d'accès dépendent de l'endroit où la variable reçoit une valeur.