【问题标题】:Can a list and variables be returned from a function?可以从函数返回列表和变量吗?
【发布时间】:2013-05-21 05:49:52
【问题描述】:

我可以做到这一点..

def funcOne():
    a,b = funcTwo()
    print a, b

def funcTwo():
    .....
    ......   
    return x, y

但是也可以从 funcTwo 返回一个列表并在 funcOne 中与 2 个值一起显示吗?似乎没有任何效果

【问题讨论】:

    标签: python call return-value


    【解决方案1】:

    当您返回多个值时,您所做的只是构建一个包含这些值的单个元组,然后将其返回。您可以构造包含任何内容的元组,并且列表位于任何内容之下:

    def funcOne():
        a, b, some_list = funcTwo()
        print a, b, some_list
    
    def funcTwo():
        ...
        some_list = [...] 
        return x, y, some_list
    

    如果您的意思是希望从列表中返回值,您可以通过返回列表来实现,解包也适用于列表:

    def funcOne():
        a, b, = funcTwo()
        print a, b
    
    def funcTwo():
        ...
        some_list = [x, y] 
        return some_list
    

    或者,如果您想使用列表中的所有值扩展返回的值,您只需要将您希望返回的值列表与额外值列表连接起来:

    def funcOne():
        a, b, c, d = funcTwo()
        print a, b, c, d
    
    def funcTwo():
        ...
        some_list = [z, w] 
        return [x, y] + some_list
    

    【讨论】:

      【解决方案2】:
      >>> def list_and_vars():
          a, b = "fee", "fi"
          c = ["fo", "fum"]
          return a, b, c
      
      >>> print list_and_vars()
      ('fee', 'fi', ['fo', 'fum'])
      >>> a, b, [c, d] = list_and_vars()
      >>> a, b, c, d
      ('fee', 'fi', 'fo', 'fum')
      

      【讨论】:

        【解决方案3】:
        def funcOne():
            f2x,f2y = funcTwo() #tuple unpacking var1,var2 = (val1,val2)
            print a,b,list((lf2x,f2y)) #convert tuple to list
        
        def funcTwo(): 
            return x, y #actually returns (x,y)
        

        如果我们看下面

        def funcTwo():
            return 'a','b'
        print(funcTwo())
        

        我们可以看到funcTwo返回一个包含'a','b'元组

        >>> 
        ('a', 'b')
        

        这样 Python 只返回一个值,但是它的元组解包可以使它看起来不是这样的:

        var1,var2 = funcTwo()
        print(var1)
        print(var2)
        >>> 
        a
        b
        

        可以显式返回一个列表:

        def funcTwo():
            return ['a','b']
        print(funcTwo())
        

        在这种情况下,您仍然返回一个值,它只是一个列表。例如:

        def funcTwo():
            return ['a','b']
        def funcOne():
            return 'c','d',funcTwo()
        print(funcOne())
        

        会打印

        >>> 
        ('c', 'd', ['a', 'b'])
        

        您再次看到,我们只返回了 一个 值,这是一个包含我们希望返回的所有值的元组。

        如果您只想在 funcOne 中打印某些内容,除非您使用字符串格式,否则您将得到与 print 编辑返回值相同的结果,因为 print('a','b','c') 打印 ('a','b','c') 但是您可以做一些事情喜欢:

        def funcOne():
            print(','.join(['c','d',funcTwo().__repr__()]))
        >>> 
        c,d,['a', 'b']
        

        【讨论】:

          猜你喜欢
          • 2013-10-30
          • 1970-01-01
          • 2011-02-17
          • 1970-01-01
          • 2023-02-15
          • 2011-04-18
          • 2021-12-23
          • 2018-09-25
          • 2010-12-09
          相关资源
          最近更新 更多