为什么使用无语法的字符串或整数不会抛出语法错误?

我真的一定会错过一些东西。

所以我有这个很好的语法。

"Hello darling" #THIS!
print "Hello world!"

为什么你好亲爱的不会抛出语法错误。 我的意思是,没有print声明。 “Hello world”就在那里。 从语法突出来看,hello world是一个字符串,而不是注释。

这也适用。

7
print "8"

而7显然是一个整数。 7只是坐在那里,没有引用一个变量,就在那里。 “Syntaxless”

问题:为什么它有效? 7和“Hello Darling”都是整数和字符串,但不是注释。 我的意思是,如果这是一个评论,那么它会让口译人员忽略评论,但事实并非如此。


这是因为你正在创建这些字符串或整数,然后不将它们分配给任何变量,所以python在创建它们后就简单地丢弃它们。

例如,当你有

a = 5

python创建int 5,然后将其分配给变量a 。 但是,如果你有

5

python创建int 5,但不存储在任何地方。 字符串也是一样。 在语法上,它是有效的。 从语义上讲,这是一个完全的浪费。

希望有所帮助


您只创建了一个名为"Hello Darling"的字符串,这是可以的(除非浪费),因为在执行打印命令"Hello World"后会抛出该字符串。


仅当您尝试运行的代码包含错误时才会引发语法错误,这意味着Python解释器无法知道要运行的代码。 结束丢弃结果的代码不是语法错误。

在你的情况下,你指定了完全正确的语法。 行中没有错误。 Python不关心他们是否没有做任何事情。

两者都产生可执行代码,两者都会导致产生一个对象(一个strint )的表达式,然后这个对象不会被使用并最终被丢弃。

请注意,Python对于一行上的字符串具有特定的用途,如果它位于函数,类或模块的开头。 然后使用该字符串,它被指定为文档字符串:

def foo():
    "I am a docstring"
    return 'bar'

print foo.__doc__
# prints I am a docstring

在CPython(参考Python实现)中,它们自己在一行中未使用的文字表达式会被简单地优化掉。 你的"Hello darling"7行永远不会将它编入已编译的字节码中。

链接地址: http://www.djcxy.com/p/53161.html

上一篇: Why having a syntaxless string or integer doesn't throw syntax error?

下一篇: Efficient way to build a data set from fits image