我这里有些我不懂的东西。我的意思是,它有效,但是我想了解幕后发生的事情:
def load_data():
f = gzip.open('mnist.pkl.gz', 'rb')
training_data, validation_data, test_data = pickle.load(f, encoding="latin1")
f.close()
return (training_data, validation_data, test_data)
所以,我想了解的是在这里,在第3行中,有3个变量(training_data,validation_data和test_data)。这些被分配给一个功能!我的问题是,它们和/或功能会发生什么?函数执行了三次吗?还是变量只是可以调用的函数?还是将加载的数据分为三部分,其中三分之一分配给每个变量?我是菜鸟,所以这可能很愚蠢,但是请帮助我!
答案 0 :(得分:0)
select *
from tabla
order by 1
offset 0 rows fetch next 50 rows only;
被执行一次。您看到的构造称为拆包,或多或少等同于
pickle.load(...)
(实际上,拆包还有另外一件事:它确保result = pickle.load(f, encoding="latin1")
training_data = result[0]
validation_data = result[1]
test_data = result[2]
恰好具有3个元素)这有帮助吗?
答案 1 :(得分:0)
否,该功能没有执行三次, 但会同时返回值。
此question可以为您提供帮助。
答案 2 :(得分:0)
这称为序列拆包。您可以在Python documentation。中找到它,其内容为:
语句
t = 12345, 54321, 'hello!'
是元组的示例 包装:将值12345
,54321
和'hello!'
打包在一起 元组。反向操作也是可能的:x, y, z = t
这被适当地称为序列解压缩,适用于右侧的任何序列。
这种语言的功能使编写似乎返回多个结果的函数(尽管它们实际上只是返回一个元组)变得容易,例如
def get_three_numbers():
return 5, 7, 11
a, b, c = get_three_numbers()