鱼C论坛

 找回密码
 立即注册
查看: 1029|回复: 5

新手求助

[复制链接]
发表于 2018-2-11 19:38:18 | 显示全部楼层 |阅读模式

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

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

x
def fun1(x):
        def fun2(y):
                return x*y
        return fun2()
为什么这样有错误,而把return fun2()改成 return fun2就不会出错,这是什么原理?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-11 19:41:18 | 显示全部楼层
return fun是指返回一个函数
fun()是引用函数的用法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2018-2-11 22:01:22 | 显示全部楼层
你像这样写的时候 return fun2(),相当于是调用了fun2()这个函数。也就是等同于下面这样:
a = fun2()
return a
但是你的fun2函数是需要一个参数的,你这里没写,当然就错了

你要是非要这么写,可以写成:
def fun1(x,z):
        def fun2(y):
                return x*y
        return fun2(z)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-12 11:07:53 | 显示全部楼层
shuofxz 发表于 2018-2-11 22:01
你像这样写的时候 return fun2(),相当于是调用了fun2()这个函数。也就是等同于下面这样:

但是你的fu ...

哦,我还有个问题:因为我在fun2()函数里给x重新赋值了,所以就不考虑外部函数fun1中x所给的值了,那如果子函数里面的x没赋值,是不是就默认自动按外部函数给的值吗?那这时候x是相当于全局变量吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-12 11:45:35 | 显示全部楼层
我没太明白你的意思,前半段是说把x参数去掉么,变成这样?
def fun1(z):
        def fun2(y):
                return x*y
        return fun2(z)

这样编译是可以的,x相当于全局变量

但是!要注意一点,在函数中绝不可以使用x进行计算,比如x = x+1,这样写的时候就把x变成了局部变量,但是这个局部变量的x又没赋值,就会报错,比如:
Snipaste_2018-02-12_11-45-12.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-12 15:13:17 | 显示全部楼层
shuofxz 发表于 2018-2-12 11:45
我没太明白你的意思,前半段是说把x参数去掉么,变成这样?

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 02:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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