函数内列表的赋值问题
def get(n):result = []
if n >0:
result.insert(0,n%10)
get(n//10)
return result
dd = get(123456)
print(dd)
结果是
另一种写法
result_1 = []
def get_1(n):
while n:
result_1.insert(0,n%10)
n = n//10
return result_1
get_1(123456)
print(result_1)
结果是
result_1 是全局变量,在函数外定义,为什么在调用函数时数值变化,
result在函数体内定义,在调用函数时,只记录了最后一个赋值,
这两种表达方式为什么不一样呢?
运行看懂下面代码
a = []
def get():
b = []
a.append(1)
b.append(1)
get()
a.append(2)
b.append(2)
import time
def get():
while True:
b = []
b.append(1)
print(b)
time.sleep(1)
get() 本帖最后由 麻麦皮 于 2020-4-19 10:52 编辑
def get(n):
result = []
if n >0:
result.insert(0,n%10)
get(n//10)
return result
dd = get(123456)
print(dd)
result_1 = []
def get_1(n):
while n:
result_1.insert(0,n%10)
n = n//10
return result_1
get_1(123456) #返回了result_1==代替原来的result_1==[]
print(result_1)
注意:return都是全局变量
1、get(123456)里的result==,调用了get(12345),get(12345)里的result==,调用了get(1234),get(1234)里的result==...调用了get(1),get(1)里的result==
get(1)返回了result==,get(12)返回了result==取代了result==...get(123456)返回了result==取代了result==
2、第一次循环返回了result_1==,第二次循环返回了result_1==...第六次循环返回了result_1==
函数返回了全局变量result_1==,取代了原来的result_1==[]
给楼主详细分析了每个步骤了 def get(n):
result = [] #递归每次调用函数,result都会被重置,所以只返回最后一次调用的值,所以这样行不通,非递归的函数倒是可以内置列表。
if n >0:
result.insert(0,n%10)
get(n//10)
return result
dd = get(123456)
print(dd) 厉害 ba21 发表于 2020-4-19 10:23
运行看懂下面代码
理解了 感谢感谢 txxcat 发表于 2020-4-19 11:26
理解了 感谢感谢 txxcat 发表于 2020-4-19 11:26
理解了 感谢感谢 txxcat 发表于 2020-4-19 11:26
理解了,感谢感谢!
页:
[1]