小甲鱼课后作业20讲疑问
def funY():x=5
x += 1
return x
a = funY()
print(a)
print(a)
print(a)
为什么打印不了678呢?
第三行运行完,x就已经是新值了,第二行的x也变了 x = 5
你每次进入函数,x都为5当然是打印5+1了 第三行只运行了一次{:10_253:} 而且函数运行完x的内存就被释放了 没保存新值 每次都是5 本帖最后由 大马强 于 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()) 函数内部是局部变量,不会变的 a = funY()调用了funY()函数:
x = 5
x += 1# 此时x = 6
return x# return 6
那么a = 6
print(a)# 打印6
print(a)# 打印6
print(a)# 打印6 def funY(x):
return x + 1
a = funY(5)
print(a , end = '')
a = funY(a)
print(a , end = '')
a = funY(a)
print(a) 调用funY(),每次都会重新给x赋值为5,返回的永远是6。看你的想法应该是每次调用funY()实现+1的功能,那你有两个方法:传入变量进去进行运算或者定义全局变量。
使用全局变量global声明,在函数内修改a的值。
a = 5
def funY():
global a
a += 1
return a
print(funY())
print(funY())
print(funY())
内置函数的值已经固定了,你可以用
def ds(x):
return x + = 1
a1= ds(5)
a2=ds(6)
a3=ds(7)
print(a1,a2,a3)
页:
[1]