1

我正在学习 python,这是一个我不太明白的代码:

text = 'zip is very zipped'
print text.find('zip', text.find('zip') + 1)

现在,我知道这是完成的捷径:

text = 'zip is very zipped'
occur_once = text.find('zip')
print text.find('zip', occur_once + 1)

我想知道,怎么做

print text.find('zip', text.find('zip') + 1)

有效,Python 以什么顺序评估这些表达式?这种执行“命令”有名称吗?

4

3 回答 3

4

Python 使用严格(急切)的评估策略:函数的参数总是在应用函数之前完全评估。评估顺序从左到右(评估分配时除外):

不下降到属性查找:

  1. 评估text.find(我们将结果命名为 F1)
  2. 评估'zip'→ A1
  3. 评估text.find→ F2
  4. 评估'zip'→ A2
  5. 调用F2.__call__(A2)(我们将调用返回值 R1) ( text.find('zip'))
  6. 评估1→ A3
  7. 调用R1.__add__(A3)(返回 R2) ( R1 + 1)
  8. 调用F1.__call__(A1, R2)(返回最终结果) ( text.find('zip', R2))
于 2013-03-27T22:33:06.020 回答
2

Python 将在函数调用中从左到右评估参数,然后执行函数本身。

一般评价顺序是从左到右

于 2013-03-27T22:30:11.700 回答
1

它被称为运算符优先级评估顺序。在表达式中,运算符优先级适用,并且每个表达式都使用评估顺序。

text.find()调用位于+加法运算符之前,因为它具有更高的优先级。

对于同等优先级的运算符,评估从左到右进行。在函数调用中,每个参数都是一个单独的表达式,因此它们是从左到右计算的。

于 2013-03-28T20:30:58.933 回答