我正尝试返回在函数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)
答案 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