B1 · 第23集 · 4:47
Python函数调用与返回值
本集讲解Python中函数的嵌套调用、局部变量作用域及return语句如何传递返回值。
来源:jmbarbier / peertube.solidev.net · 许可:CC BY-SA 4.0
字幕
Maintenant coucou est remplacé
现在,‘coucou’被
par la valeur de retour.
返回值所替代。
Donc là mon coucou, ici, il vaut maintenant à la place 5.
所以,我这里的‘coucou’,此时它的值变成了5。
Donc je suis en train d'exécuter cette instruction- là, c égale 5.
因此,我正在执行这条语句:c 等于 5。
Quel c? Ce c qui est là, je suis à l'intérieur de coucou, donc mon c qui est là,
哪个 c?就是这里的这个 c——我此刻在‘coucou’函数内部,
il valait 3, et maintenant ce c là.
它原本的值是3,而现在的这个 c,
Il vaut 5. Et quand je vais passer à l'instruction d'après, return c,
它的值变成了5。
je vais renvoyer de la fonction où j'étais,
当我执行下一条语句‘return c’时,
donc c'est- à- dire cette fonction- là, la cui- cui.
我会从当前所在的函数(也就是这个‘cuicui’函数)中返回。
Je vais renvoyer la valeur
我会把数值
5 au mon programme principal.
5 传回主程序。
Donc là ici, le cucu de 3 qui est là
因此,这里这个参数为3的‘cucu’调用,
est remplacé par la valeur de retour, cette valeur de retour qui est 5.
被返回值5所替代。
Et donc j'ai un magnifique print 5.
于是,我就得到了一个漂亮的输出:5。
Donc là, mon écran, je l'avais pas encore fait.
刚才我的屏幕还没展示出来。
ça affiche juste 5.
屏幕上只显示数字5。
Donc là on a un appel de fonction et vous voyez qu'à chaque fois que j'ai un appel
所以,我们这里有一个函数调用;而且你看,每次调用一个函数,
de fonction qui appelle une fonction, je décale.
如果它又调用了另一个函数,缩进就会增加一层。
Et là ce qu'on voit c'est qu'on a la
这里我们看到的是,
variable c qui est dans cuicui.
‘cuicui’函数内部定义的变量 c。
Là ici on a une variable a, b qui est créée à l'intérieur de coucou et puis qui va
而这里,在‘coucou’函数内部创建了变量 a 和 b,
disparaître. qui est terminée à partir du moment où je sors de coucou.
它们会在退出‘coucou’函数后自动消失。
On peut aller vérifier.
我们可以去验证一下。
sur le Python, on devrait avoir un affichage qui vaut juste 5,
在 Python 中运行,应该只显示数字5,
c'est le cas. Et ensuite le faire en exécutant ici les différentes étapes.
确实如此。接下来,我们通过逐步执行来演示整个过程。
Donc là c'est juste les déclarations des fonctions.
所以,这里只是函数的声明。
Là je rentre dans l'appel à la fonction cui cui.
接下来,我进入对函数‘cui cui’的调用。
La valeur qui est donnée, c'est 3, donc c vaut 3.
传入的值是3,因此c的值为3。
J'ai un appel maintenant à la fonction coucou.
现在,我又调用了函数‘coucou’。
Donc là ici, ça se lit comme ça,
此时,这里应这样理解:
le programme principal a appelé la fonction cui cui qui a appelé la fonction coucou.
主程序调用了函数‘cui cui’,而‘cui cui’又调用了函数‘coucou’。
Et là on a ici variable a qui vaut 3, b qui vaut 2.
此处变量a的值为3,b的值为2。
On fait nos opérations, a qui vaut 5, et on renvoie la valeur de
我们执行运算,a变为5,然后返回a的值。
a. Et maintenant, le c prend la valeur de retour de la fonction précédente.
接着,c接收上一个函数的返回值。
Et le print affiche 5 et c'est terminé.
最后,print输出5,程序结束。
A few moments later.
片刻之后。
Alors, nouvel exo, exercice 4,
好了,新练习来了——练习4,
là ici. On complique petit à petit.
就在这里。难度正逐步提升。
Donc essayez de le faire, à vous de jouer.
请试着独立完成,现在轮到你们了!
Faut y aller doucement là sur celui- là.
这个题目要特别放慢节奏、仔细分析。
Alors la correction, sur,
下面来看解析:
on départ, par de là, là ici on est sur des définitions de fonctions,
一开始,从这里开始——此处是函数定义部分,
donc la première exécution se passe exactement ici.
因此第一次执行就发生在这里。
Et alors là il faut bien décomposer, puisque on a.
接下来,我们必须仔细分解,因为这里出现了:
g de f de g. Ce qu'il faut savoir c'est qu'on commence toujours par le plus
g(f(g(…)))。需要记住的是,我们总是从最内层开始计算。
intérieur. Donc là, parenthèse la plus intérieure ici,
此处最内层的括号是:
ça veut dire on va appeler g de
即先调用g函数,
2. Donc là ici, je vais.
参数是2。
Faire un appel avec g ici,
所以,我将在此处调用g函数,
et je l'appelle avec l'argument 2, donc a vaut 2.
并传入参数2,因此a的值为2。
Donc si j'écris ça, je pars de mon programme principal.
因此,如果我写下这个,就从主程序开始。
Et je vais appeler la fonction g
然后调用函数 g。
avec ici a qui vaut 2.
此处参数 a 的值为 2。
L'étape d'après, c'est de renvoyer trois fois a.
下一步是返回 a 的三倍。
Donc je reviens de cette fonction.
于是,我从该函数返回。
Avec la valeur 3 fois 2, ça fait 6.
返回值是 3 乘以 2,即 6。
Donc je reviens dans mon programme principal qui était là.
我回到原先所在的主程序。
Maintenant ça veut dire que le g de 2 qui est là, il n'existe plus.
此时,这里的 g(2) 就不再存在了。
Il est remplacé par la valeur de la fonction,
它被函数的返回值所替代。
la valeur de retour de la fonction.
也就是函数的返回值。
Maintenant c'est un appel à f.
接下来是一个对函数 f 的调用。
Donc je pars d'ici et c'est un appel avec f et la valeur qui est appelée à
我从这里出发,调用 f,并将括号内的值作为参数传入。
l'intérieur c'est la valeur 6.
括号内传入的值是 6。
Donc là ici ça fait un
因此,这里执行的是一个
appel à. f et la valeur du paramètre qui est là,
对函数 f 的调用,
c'est la seule paramètre qui est donné, c'est b.
其唯一参数是 b。
est égal à 6. Et la fonction va directement renvoyer.
b 等于 6。函数会直接返回结果。
un deux fois b, donc là ici, je renvoie à mon programme principal,
它向主程序返回 2 乘以 b,
un deux fois six, ça fait douze.
即 2 乘以 6,结果为 12。