鱼C论坛

 找回密码
 立即注册
查看: 1333|回复: 8

求助大神帮我解释下这个代码为什么最后得19

[复制链接]
发表于 2018-2-7 15:36:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
麻烦各位大神给我解释下这个代码为什么得19,谢谢啦
  1. >>> x = 12
  2. >>> def g(x):
  3.              x = x + 1
  4.              def h(y):
  5.                  return x + y
  6.              return h(6)
  7. >>> g(x)
复制代码




小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-7 15:39:45 | 显示全部楼层
x初始为12
进入g(x)
x自增1变成13
y=6
调用h(y)
返回 x+y == 19 给 g(x)
g(x)最后返回h(x)返回的19
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 15:42:40 | 显示全部楼层
采用递归  
x = 12
>>> def g(x):
             x = x + 1     # x=13
             def h(y):
                 return x + y  # 13+y
             return h(6)  # 13 +6输出结果
>>> g(x)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 15:43:17 | 显示全部楼层
g(x)把x=12带入了函数,内部生成x一样的局部且同名变量x=12,x加了1变13
g(x)返回的是h(6),即函数h(y),y=6,x=13带入
最后返回13+6而已
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-7 15:52:03 | 显示全部楼层
BngThea 发表于 2018-2-7 15:39
x初始为12
进入g(x)
x自增1变成13

那麻烦问下和这个代码的区别在哪里呢?这个代码没有用一开始的初始值10,而是用的3,是为什么呢
  1. >>> a = 10
  2. >>> def f(x):
  3.       return x + a
  4. >>> a = 3
  5. >>> f(1)
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 16:01:03 | 显示全部楼层
nuoguanguan 发表于 2018-2-7 15:52
那麻烦问下和这个代码的区别在哪里呢?这个代码没有用一开始的初始值10,而是用的3,是为什么呢

参数在函数使用才有效,def只是定义,没拿来用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-7 16:05:07 | 显示全部楼层
塔利班 发表于 2018-2-7 16:01
参数在函数使用才有效,def只是定义,没拿来用


谢谢啦,懂了懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-7 16:05:48 | 显示全部楼层
南城顾她 发表于 2018-2-7 15:42
采用递归  
x = 12
>>> def g(x):

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 16:30:46 | 显示全部楼层
nuoguanguan 发表于 2018-2-7 15:52
那麻烦问下和这个代码的区别在哪里呢?这个代码没有用一开始的初始值10,而是用的3,是为什么呢

函数定义的时候参数并不是直接用的,只有调用的时候才有效
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-27 20:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表