【问题标题】:Return list from while loop in a function?从函数中的while循环返回列表?
【发布时间】:2019-03-31 14:31:38
【问题描述】:

我正在尝试返回在函数 make_list 中创建的列表 my_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)

【问题讨论】:

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


    【解决方案1】:

    您正在尝试访问 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 参数。

    【讨论】:

    • 感谢您提供额外信息!我刚刚开始研究这个
    【解决方案2】:

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

    tata = make_list()
    print(tata)
    

    当您离开定义它的函数范围时,变量my_list 将被销毁。这就是你退货的原因。


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

    【讨论】:

      猜你喜欢
      • 2019-09-06
      • 1970-01-01
      • 2013-01-26
      • 2021-06-14
      • 2021-04-22
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2020-07-07
      相关资源
      最近更新 更多