Python Shell中print()函数首字母前报Invalid Syntax错误排查
问题原因
这个报错和print语法、Python版本差异没有任何关系,是Python交互式Shell(你平时练习用的带>>>提示符的窗口)的多行输入规则导致的。
在交互式Shell里写带缩进的多行代码块(比如自定义函数、循环、条件判断)时,写完块内最后一行缩进代码后,如果窗口显示...续行提示符,必须先空按一次回车,等提示符切回>>>,代表代码块已经定义结束,才能输入块外的其他代码。
你现在的操作是写完函数内的return L、看到...提示符后,没有空按回车退出函数编辑状态,直接就在...状态下输入了函数外的print语句。解释器会判定你还在编辑函数内部内容,这行print既没做正确缩进、也不符合函数内代码的语法要求,就会在这行最开头(也就是print的首字母p之前)抛出无效语法错误。
哪怕你直接复制教程里的正确代码粘贴运行,只要函数结束的位置没带那个触发退出块编辑的空行,就会报完全一样的错,不是示例代码本身有问题。
正确操作方法
- 启动Python Shell,等待
>>>主提示符出现后开始输入 - 逐行录入函数定义:
- 输入
def f(a, L=[]):后按回车,Shell会自动弹出...续行提示 - 按缩进要求输入
L.append(a)后按回车 - 输入
return L后按回车
- 输入
- 此时Shell仍停留在
...续行状态,不要输入任何内容,直接按一次回车,等提示符重新变回>>>,就代表函数已经定义完成 - 回到
>>>状态后,再逐行输入三个print语句,每输入完一行按一次回车,就能正常得到运行结果
避坑提示
如果觉得交互式Shell逐行输入、记着空行太麻烦,可以把代码写在后缀为.py的纯文本文件里,通过IDLE的编辑器模式直接运行整个文件,就不会碰到这类多行块输入的语法报错。
内容的提问来源于stack exchange,提问作者Jeff Leobold
相关产品推荐
相关产品推荐

