我开始从教程中学习Python,我不确定这段代码是如何工作的。所以我们在函数中有return
jelly_beans, jars, crates
;然而,稍微低于我们看到一组名为beans, jars, crates
的新变量。这是否意味着来自jelly_beans, jars, crates
的{{1}}可以替换为任何三个组合?有人可以为我打破这个吗?
return
答案 0 :(得分:1)
该函数返回tuple
return jelly_beans, jars, crates
或更明确地
return (jelly_beans, jars, crates)
下一部分称为元组解包
sometuple = secret_formula(start_point)
beans, jars, crates = sometuple
因为你的函数返回一个3的元组,所以它可以解包为3个变量
您也可以一步完成此操作
beans, jars, crates = secret_formula(start_point)
答案 1 :(得分:0)
formula = secret_formula(start_point)
print type(formula) # <type 'tuple'>
所以当你返回它的return
元组时。
beans, jars, crates = secret_formula(start_point)
通过这种方式,您可以使用tuple
中的数据初始化这些变量,如下所示: -
In [6]: a, b, c = (1, 2, 3)
In [7]: a
Out[7]: 1
In [8]: b
Out[8]: 2
In [9]: c
Out[9]: 3
所以如果你做这样的事情,即使存储在一个变量中它也能正常工作,
print "We'd have {!r} formula" .format(formula)
答案 2 :(得分:0)
def secret_formula(started):
jelly_beans = started * 500
jars = jelly_beans / 1000
crates = jars / 100
return jelly_beans, jars, crates
start_point = 10000
beans, jars, crates = secret_formula(start_point)
print "With a starting point of: %d" % start_point
print "We'd have %d beans, %d jars, and %d crates." % (beans, jars, crates)
击穿:
x
和y
而不冲突}来使用不同的函数。/ LI>
jelly_beans
和jars
以及crates
并进行计算,并链接( bind )这些名字的结果数字。tuple
。这就是jelly_beans, jars, crates
通过在它们之间使用逗号来做的事情。元组是由几个组合在一起的元素的集合,为方便起见被视为一件事。你只能返回一件事,所以这是一个解决方法,返回三个数字作为一个东西。元组包含数字,而不是名称。jelly_beans
和jars
以及crates
名称就在这时候。该函数不再运行,其中使用的所有名称都“超出了范围”并被清理干净。这是否意味着返回的jelly_beans,jars,crate可以用三个组合替换?
是的。 NB。当print
打印“%d”时,它正在查找整数,因此您必须使用任意三个数字3,55,100
或数字变量替换它们。
答案 3 :(得分:0)
python与其他语言(例如java和C#)之间的一个有趣区别是python可以返回几个结果,这就是我们所谓的元组
那么你的问题: 这是否意味着来自返回的jelly_beans,罐子,板条箱可以用三个组合替换?
我的回答是肯定的,
在代码之后:三个变量将被初始化,并且知道自己的类型......
beans, jars, crates = secret_formula(start_point)
如果secret_formula()函数返回为:
return 1, 'a', {'key':'value'}
也会使感官,豆类,罐子,板条箱分别知道它们是int,string和dict类型