【发布时间】:2017-08-16 07:38:57
【问题描述】:
我主要学习 C 语言,并花了很多时间了解它的底层实现。但我最近开始学习python。所以这里有很多与 C 不同的怪癖。
'in' 语句在 python 中是如何工作的?
if x in array:
#the usage of an in statement produces a boolean
for x in array:
#the usage of an in statement produces an iterable
也是一个附带问题。 'Not' 可以放在布尔表达式前面,类似于 '!'在 C 中,或者它可以放在 python 中的“in”语句的前面。这怎么可能?
if not x == 5:
#makes sense because 'x == 5' evaluates to a boolean
if x not in array:
#the statement 'in array' is not a boolean
#shouldn't it be 'if not x in array'
这两者怎么可能?他们的评估方式不应该保持一致吗?现在,我相信这是因为 Python 是一种解释型语言,解释器可以根据周围的语法做不同的事情。
解释或解释的链接将非常有用,我找不到任何解决此问题的方法。
【问题讨论】:
-
for <target> in <iterable>与<expr> in <expr>没有太多共同之处,只是这两种语法都以相同的顺序使用字母i和n。 -
not x in array也可以,但not in更具可读性。in和not in都是运算符。正如 Martijn Pieters 所说,for … in是无关的,in不是那里的运营商;相反,它是for语法的一部分。这与 Python 是一种解释型语言无关。 -
如果你学过C,你应该对编译器和词法分析了解一两点吧?嗯,这两种类型的语句在这个意义上是完全不同的......它们只是以完全不同的方式编译......
-
我的问题更多是关于python如何处理这两者,而不是哪种方式更好
-
任何语言都一样。某些关键字有多种用途,编译器知道如何根据上下文处理它们。取
C中的extern关键字。
标签: python