首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程篇10:函数调用怎样在内存中跳转?

莫道前路无知己,总有BUG跟着你...

昨天聊到了函数,我们已经熟悉了print(),input(),len()这些python的内置函数,这篇我们来试着编写自己的函数。

如图中先在②中定义函数,然后在①中使用函数名称调用函数,并带入参数值得出结果。

使用def来定义函数,def是define的缩写,本身就是定义的意思,括号中的x和y就是参数(参数是什么请参照第9篇)用来起到自然语言中代词的作用。

然后使用return语句返回函数的结果,即x和y相乘。注意这里用了return而不是print,我们习惯了使用print()函数用来打印结果,但函数中要使用return用于返回函数结果。

为什么要用return呢?因为虽然②写在①的前面,但是程序的执行顺序是从①开始的,执行到函数名multiple后调用②中已经定义好的函数。由于代码实际上是运行在内存中的,定义函数和调用函数的内存区域并不一定连续,因此代码中①调用②的同时,内存中也会由①的区域跳转到②的区域运行,函数在②中运行完成后需要将结果再返回给①,从而完成一次函数调用,内存也需要重新回到①的区域。这个返回的动作只有return能够完成,print是万万不能的。

函数内部的变量result只在该函数体中有效,函数外部是无法使用的,这也很好理解,通过上面的例子可以知道,函数内部和函数外部本身并不处于相同的内存空间,当然乱用啦。而只在函数内部有效的变量就叫做局部变量。

如果非要在函数外部使用函数内部的变量,也不是不可以,只是要在函数内对变量进行声明,加一个global关键字让变量全局生效,global是全球化的意思,全球化的变量就叫做全局变量啦,此时它已经突破了区域的限制。

上例中在函数外部给全局变量greet赋值,在函数内部也可以起作用。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180410G1XPAA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券