Python 在if语句中运行多行代码时语法无效

Python 在if语句中运行多行代码时语法无效,python,Python,非常非常简化的代码版本,便于阅读 myList = {"object1","object2","object3"} myString = "object4" if myString in myList: { print("Hello,") print("World!") } 第一次打印有效,但第二次打印返回语法错误? 在这个网站上问这样一个简单的问题让我觉得很奇怪,

非常非常简化的代码版本,便于阅读

myList = {"object1","object2","object3"}
myString = "object4"

if myString in myList: {
  print("Hello,")
  print("World!")
}
第一次打印有效,但第二次打印返回语法错误? 在这个网站上问这样一个简单的问题让我觉得很奇怪,但我找不到任何类似的搜索结果,所以我想我可能只是个傻瓜,需要一些明显的提示


if语句中执行的多行代码会导致语法错误。

Python没有大括号来分隔代码块;它只使用缩进

if myString in myList:
    print("Hello,")
    print("World!")

有评论建议添加逗号:

if myString in myList: {
    print("Hello,"),
    print("World!")
}
这“起作用”,但这只是因为您对
if
语句的主体使用了表达式语句。正文需要一个或多个语句的序列;一种类型的语句是表达式语句(由单个表达式组成的语句)。因为
print
是一个函数,大括号可以被解析为定义一个集合显示,一个在运行时计算为集合
{None,None}
。因此,它是
if
语句的有效主体


如果您在任何其他类型的语句中尝试此操作,您将继续得到一个语法错误,确切的错误取决于您尝试使用的语句以及在此过程中对解析器的混淆程度。

Python不使用大括号来包围代码块。作为一个幽默的旁白,您可以尝试要求解释器使用来自未来的导入大括号中的
将大括号作为可选功能启用。此外,
myList
是一个集合,而不是一个列表。在此处了解缩进:如上所述,删除大括号即可。从技术上讲,如果你在第一个print语句后面加一个逗号,它也会起作用。。。(但不建议)