从while循环返回函数列表?

时间:2018-10-26 19:41:19

标签: python python-3.x return-value

我正尝试返回在函数my_list中创建的列表make_list,以在函数print_elems中使用。

我不断收到错误

  

my_list未定义

当我要求打印后,调用“ make_list”。

在尝试返回“ my_list”时我做错了什么?

def make_list():
    my_list = []
    print("Enter \"-999\" to return list.")
    x = int(input("Enter a number: "))
    while x != -999:
        my_list.append(x)
        x = int(input("Enter a number: "))
    return my_list

def print_elems(user_list):
    print(user_list, sep=' ')


make_list()
print(my_list)
print_elems(my_list)

2 个答案:

答案 0 :(得分:3)

您正在尝试访问 local 变量my_list。您必须使用返回值,而不是将其分配给变量:

some_name = make_list()  # assign function result to variable
print(some_name)
print_elems(some_name)

在旁注中,您可能需要稍微修改print_elems

def print_elems(user_list):
    print(*user_list, sep=' ')

列表* unpacks并将其元素传递给print函数。否则,当将单个位置参数传递给print时,将永远不会使用sep参数。

答案 1 :(得分:1)

您需要将函数的返回值分配给变量:

tata = make_list()
print(tata)

离开您定义变量的函数的作用域时,变量my_list被销毁。这就是为什么要退货。


请参见Short Description of the Scoping Rules?PyTut: Scopes and namespaces