三个变量的集合?

2024-06-07 23:12:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始从教程中学习Python,我不知道这段代码是如何工作的。因此,我们在函数中有一个return表示jelly_beans, jars, crates;然而,下面我们看到一组新的变量,名为beans, jars, crates。这是否意味着return中的jelly_beans, jars, crates可以替换为三个的任意组合?有人能帮我把这个分解一下吗?你知道吗

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)

Tags: 函数代码secretreturndef教程startpoint
3条回答
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)

分解:

  1. 将起点定义为10000
  2. 把它传给秘密公式()
  3. 秘密公式里面有一个新的“范围”——变量可以存在的地方。就像在一个有单向玻璃窗的房子里。您可以在外部范围内看到变量,但外部无法在内部看到变量。{Scope部分存在,因此可以使用相同的变量名(如xy)使用不同的函数,而不会发生冲突}。你知道吗
  4. 在secret\u formulascope中,创建变量jelly_beansjarscrates并进行计算,并将(bind)结果数字链接到这些名称。你知道吗
  5. 在秘方中,把这三个组合成一个tuple。这就是jelly_beans, jars, crates所做的,在它们之间加上逗号。元组是一些事物的集合,这些事物组合在一起,为了方便起见被视为一个事物。您只能返回一件事,因此这是一种将三个数字作为一件事返回的解决方法。元组包含数字,而不是名称。你知道吗
  6. 在秘方中,返回元组并完成。你知道吗
  7. Python清除了秘密公式范围,并删除了它内部运行的jelly_beansjarscrates名称。该函数不再运行,其中使用的所有名称都已“超出范围”并被清除。你知道吗
  8. 从函数中产生的元组是由三个数字按顺序组成的一组。在这个外部范围中,创建三个新变量名,将三个数字拆分,并将这些数字绑定到这些新名称。你知道吗

Does this mean that jelly_beans, jars, crates from the return can be replaced with any combo of three?

是的。注意。当print打印“%d”时,它寻找的是一个整数,因此必须用任意三个数字3,55,100或数字变量替换它们。你知道吗

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)

函数返回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)

相关问题 更多 >

    热门问题