【问题标题】:What is x, y = func(x, y) [duplicate]什么是 x, y = func(x, y) [重复]
【发布时间】:2021-05-29 13:07:27
【问题描述】:

我对 python 很陌生。在我看到的一个教程(关于 Tensorflow)中,我提出了这个我从未在任何其他语言上看到过的奇怪符号。

那么有人可以解释一下这是做什么的吗?

train_labels, train_samples = shuffle(train_labels, train_samples)

x, y = function(x, y) 一般是什么意思。

【问题讨论】:

  • function 返回 2 个对象的 tuple - 然后立即展开为 2 个变量 xy。它叫unpackingrealpython.com/lessons/tuple-assignment-packing-unpacking
  • x, y = function(x, y) 的情况下,function() 返回两个变量,它们将分别分配给xy。这可能是一个令人困惑的例子,因为这两个函数参数也被命名为xy,但这与它无关。
  • 在你的情况下,shuffle 似乎返回了一个集合(如列表或元组),或者可以迭代的东西——不管它是什么,它似乎有两个项目,然后分别分配给train_labelstrain_samples

标签: python


【解决方案1】:

x, y = function(x, y) 用于元组解包。当您调用的函数返回 2 个或更多值时,它会将第一个值分配给 x,将第二个值分配给 y,依此类推。请看下面的例子

def function():
   return 3, 4

x, y = function()

# x will be set to 3
# y will be set to 4

【讨论】:

    【解决方案2】:

    好吧,如果function() 的定义如下:

    def function():
        # Do some stubs
        return (1,2) # Or even return 1,2
    

    然后它将(1,2)作为一个元组返回

    然后,如果您执行x, y = function(),则称为元组解包。基本上x 设置为元组的第一个元素 (1),y 设置为第二个元素 (2)。

    如果函数返回更多,比如return (4,5,6),你可以使用x,y,z = function()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多