全桥整流 发表于 2021-8-20 10:46:03

小甲鱼课后作业20讲疑问

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

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

为什么打印不了678呢?
第三行运行完,x就已经是新值了,第二行的x也变了

大马强 发表于 2021-8-20 10:57:22

x = 5
你每次进入函数,x都为5当然是打印5+1了

kogawananari 发表于 2021-8-20 10:57:39

第三行只运行了一次{:10_253:} 而且函数运行完x的内存就被释放了 没保存新值 每次都是5

大马强 发表于 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())

逃兵 发表于 2021-8-20 11:09:59

函数内部是局部变量,不会变的

临时号 发表于 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

jackz007 发表于 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)

常十六 发表于 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())

cheerlye 发表于 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)
页: [1]
查看完整版本: 小甲鱼课后作业20讲疑问