【问题标题】:Is it possible to assign a String but also add to an Integer from a returned tuple in one line?是否可以在一行中分配一个字符串,但也可以从返回的元组中添加一个整数?
【发布时间】:2018-04-08 09:27:35
【问题描述】:

例如,假设我有一些永远不会离开循环的字符串,但是我需要一个全局的数字计数器。而不是...

outside_int = 0

def string_Grabber(stuff):

    my_string = ''
    my_number = 0

    for i in range(who_cares):
        #stuff that concatenates my_string
        if this_happens():
            my_number += 1

    return my_string, my_number

for things in another_loop:

    loop_string = string_Grabber(things)[0]
    outside_int += string_Grabber(things)[1]

...有没有办法在一行中做到这一点,这样我就不必调用(可能很昂贵的)函数两次?喜欢:

loop_string, outside_int = stringGrabber(things)(0, += 1)

【问题讨论】:

    标签: python function return tuples


    【解决方案1】:

    我有一个快速的解决方案,您可以添加一个临时变量来捕获整数,然后将其添加到全局值中,如下所示。

    outside_int = 0
    
    def string_Grabber(stuff):
    
       return 'string',1
    
    for things in range(2):
      strring, tmp = string_Grabber('sample')
      outside_int +=tmp
      print(outside_int)
    

    返回输出

    1
    2
    

    【讨论】:

      【解决方案2】:

      没有办法在一行中做到这一点。 你可以在函数里面做:

      def string_Grabber(stuff):
      
          my_string = ''
          my_number = 0
      
          for i in range(who_cares):
              #stuff that concatenates my_string
              if this_happens():
                  my_number += 1
      
          return my_string, my_number + outside_int
      

      【讨论】:

      • 确实如此。我将在函数中添加额外的参数,但感谢您满足我的好奇心。
      • 在函数中添加“outside_int”作为参数将使其仅用于函数本地。全局变量“outside_int”不会改变。不要将其作为参数添加到函数中。
      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      相关资源
      最近更新 更多