为什么下面Python代码中的环境图与其执行顺序不一致?

问题描述 投票:0回答:1

我在学习SICP课程时,环境图中以下代码的执行顺序与我预想的不一致。

def add_one(x):
    y = x+1
    return y
def square(x):
    return x*x
    
square(add_one(9))

我期待以下评估顺序:

  1. 评估操作员
    square
    。返回一个函数值。
  2. 计算操作数。现在我们必须计算另一个表达式
    add_one(9)
  3. 评估操作员
    add_one
    。返回一个函数值。
  4. 计算操作数
    9
    。现在表达式
    add_one(9)
    返回 10
  5. 整个表达式
    square(add_one(9))
    返回100。

但是,我在这个网站上运行代码,它告诉我,

add_one
框架是在
square
之前创建的,这与我的预期相反。是吗?

我向 ChatGPT 询问了这个问题。它给出的答案是,这是因为在Python中,函数调用的优先级高于运算符。

python operator-precedence sicp
1个回答
0
投票

在为 square() 提供操作数之前,您无法对其求值。因此必须首先评估 add_one() 以便将结果传递给 square()。

© www.soinside.com 2019 - 2024. All rights reserved.