def function_b(b_list, high_num):
c_list = [0,0,0,0,0,0,0]
i = 0
for num in b_list:
if num> high_num:
c_list[i] = num
i = i +1
b_list = c_list
def main():
b_list=[1,3,6,4,1,2,8]
high_num=4
function_b(b_list, high_num)
print(b_list)
main()
谁能解释为什么不打印[0,0,6,0,0,0,8]?我认为,由于列表是可变对象,因此如果我们在function_b中分配参数b_list =c_list
,它将更改main中找到的b_list。为什么这对我们插入到function_b的参数b_list没有影响?
答案 0 :(得分:3)
使用function_b的返回值
def function_b(b_list, high_num):
c_list = [0,0,0,0,0,0,0]
i = 0
for num in b_list:
if num> high_num:
c_list[i] = num
i = i +1
return c_list
def main():
b_list=[1,3,6,4,1,2,8]
high_num=4
b_list = function_b(b_list, high_num)
print(b_list)
main()
答案 1 :(得分:2)
由于在您的function_b
中,b_list
是局部变量。它不会影响main
函数中的局部变量
使用全局变量,如下所示:
def function_b(high_num):
global b_list
c_list = [0,0,0,0,0,0,0]
i = 0
for num in b_list:
if num> high_num:
c_list[i] = num
i = i +1
b_list = c_list
def main():
global b_list
b_list=[1,3,6,4,1,2,8]
high_num=4
function_b(high_num)
print(b_list)
main()
或使用返回值:
def function_b(b_list, high_num):
c_list = [0,0,0,0,0,0,0]
i = 0
for num in b_list:
if num> high_num:
c_list[i] = num
i = i +1
return c_list
def main():
b_list=[1,3,6,4,1,2,8]
high_num=4
b_list = function_b(b_list, high_num)
print(b_list)
main()