1

_在python解释器中,当一个方法返回并且它没有被存储到一个变量时,它默认被放入变量中

In [10]: def foo(x):
   ....:     return x
   ....: 

In [11]: foo(1)
Out[11]: 1

In [12]: _
Out[12]: 1

In [13]: x = foo(2)

In [14]: _
Out[14]: 1

In [15]: x
Out[15]: 2

我想知道在进行比较语句时它是否也存储到另一个变量?像这样的东西

In [16]: if foo(2):
   ....:     print <the returned value from foo>
   ....:     
2

显然这不起作用,我必须做这样的事情

In [17]: returned_value_from_foo = foo(2)

In [18]: if returned_value_from_foo:
   ....:     print returned_value_from_foo
   ....:   
2
4

2 回答 2

2

快速回答是否定的。

在解释器中使用_只是为了方便进行交互工作。例如,当我将 Python 环境用作计算器时,我会使用它。它并不打算用作真正的变量,据我所知,这种行为甚至不存在于交互式解释器之外。

于 2013-04-04T19:07:19.627 回答
2

这是强调语句和表达式之间区别的好时机。表达式总是返回一些值(可能是None),并且由算术表达式、函数调用、列表推导等组成。

另一方面,语句不一定返回值(大多数没有)。ifwhile、、、for和变量赋值之类的东西import是语句的例子,在 python 中不返回任何值。

每个表达式也可以作为一个语句单独存在,但反之则不成立。

的情况下if,也有条件表达式形式,但看起来有点不同:

>>> x = 10
>>> y = 20 if x == 10 else 5
>>> y
20
>>> x = 15
>>> y = 20 if x == 10 else 5
>>> y
5
于 2013-04-04T19:07:39.300 回答