鱼C论坛

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

[已解决]小甲鱼课后作业20讲疑问

[复制链接]
发表于 2021-8-20 10:46:03 | 显示全部楼层 |阅读模式

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

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

x
def funY():
        x=5
        x += 1
        return x
   

a = funY()
print(a)
print(a)
print(a)

为什么打印不了678呢?
第三行运行完,x就已经是新值了,第二行的x也变了
最佳答案
2021-8-20 11:09:59
函数内部是局部变量,不会变的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-20 10:57:22 | 显示全部楼层
x = 5
你每次进入函数,x都为5当然是打印5+1了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-20 10:57:39 | 显示全部楼层
第三行只运行了一次 而且函数运行完x的内存就被释放了 没保存新值 每次都是5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-20 11:03:30 | 显示全部楼层
本帖最后由 大马强 于 2021-8-20 11:06 编辑

a = funY() 相当于a 接收了funY()返回值,你是想每次print,就调用funY(),但a不是funY()而是它返回值,
你要理解 a = funY()和a = funY的区别
x = 5
def funY():
    global x
    x += 1
    return x


a = funY
print(a())
print(a())
print(a())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-20 11:09:59 | 显示全部楼层    本楼为最佳答案   
函数内部是局部变量,不会变的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-20 11:19:30 | 显示全部楼层
a = funY()调用了funY()函数:
x = 5
x += 1  # 此时x = 6
return x  # return 6

那么a = 6
print(a)  # 打印6
print(a)  # 打印6
print(a)  # 打印6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-20 11:30:33 | 显示全部楼层
def funY(x):
    return x + 1
   
a = funY(5)
print(a , end = '')
a = funY(a)
print(a , end = '')
a = funY(a)
print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-20 14:28:17 | 显示全部楼层
调用funY(),每次都会重新给x赋值为5,返回的永远是6。看你的想法应该是每次调用funY()实现+1的功能,那你有两个方法:传入变量进去进行运算或者定义全局变量。
使用全局变量global声明,在函数内修改a的值。
a = 5
def funY():
        global a
        a += 1
        return a
print(funY())
print(funY())
print(funY())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-20 15:05:50 | 显示全部楼层
内置函数的值已经固定了,你可以用
def ds(x):
      return x + = 1
a1= ds(5)
a2=ds(6)
a3=ds(7)
print(a1,  a2,  a3)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 13:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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