2016-09-19 62 views
0

据我所知,python中的所有东西都是对象或引用。 例如:在x = 1,x是对整数对象1的引用。如果我编写print type(x),那么Python会告诉我x所引用的对象是一个整数。,是语句对象吗?

那么像if这样的陈述呢?

如果我尝试print type(if),毫不奇怪,我得到一个语法错误。我可以推测为什么会出现这种情况。也许if是一个类的静态方法,或者它可能被奇怪地定义为不可返回的,等等。我只是不知道。

最终,我怀疑if与对象或引用无关。但是,这肯定会违背所有东西都是对象或参考的想法?

+1

不,语句不是对象。 – khelwood

+0

陈述是你的程序的秘诀。他们被读取,[标记](https://docs.python.org/3/library/tokenize.html),[解析](https://docs.python.org/3/library/ast.html) ,[编译](https://docs.python.org/3/library/functions.html#compile)转换为[bytecode](https://docs.python.org/3/library/dis.html)。它们不是对象或功能。 –

回答

2

当他们说“一切都是对象或引用”时,他们特指数据。所以这自然不适用于陈述。当然,所有表达式都会产生数据。例如a == b<class 'bool'>,因为它是一个表达式。

有一些语言,其中if是一个表达式,但python不是其中之一。

+0

好吧,这样做更有意义。我只是测试了打印类型(a == b),以确认你是对的,而且我确实有一段哇的时刻,当它确实如你所说那样打印出。非常感谢! – daydreamingwill