已解决 SyntaxError: invalid syntax,Python报错原因和解决方案。

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。

这篇文章带大家解决Python语法错误 SyntaxError: invalid syntax

SyntaxError: invalid syntax

1、错误类型及排查思路

常见的错误:

  • SyntaxError:语法错误。检查拼写错误,是否缺少冒号、括号、分号等。

  • IndentationError:缩进错误。检查代码的缩进格式是否一致,建议使用空格缩进。

  • ImportError:导入模块失败。检查模块名拼写是否正确、模块路径是否正确。

  • NameError:检查引用的变量或函数是不是写错了或者还没定义。

  • TypeError:检查传递的参数类型是否正确,操作的不同类型是否兼容。比如:整数和字符串不能直接相加。

  • ValueError:参数类型正确但参数的值无法被操作。比如将字符串"abc"转换成整数类型。

  • IndexError:索引错误。比如列表只有3个元素,你却访问的索引却是5。

  • AttributeError:对象没有这个属性。检查是否拼写错误、这个版本是否移除或更换了这个属性。

  • KeyError:字典中没有这个键。检查拼写是否有误。

  • FileNotFoundError:检查文件路径是否拼写正确,文件是否被移动或删除。

标准错误:

  • StopIteration:迭代器没有更多的值。比如列表有3个元素,你却迭代5次。
  • ZeroDivisionError:除零无意义,任何数都不要除以零。
  • NotImplementedError:尚未实现的方法
  • UnboundLocalError:访问未初始化的本地变量
  • TabError:Tab和空格混用
  • FloatingPointError:浮点计算错误
  • OverflowError:数值运算超出最大限制
  • AssertionError:断言语句失败
  • GeneratorExit:生成器发生异常来通知退出
  • GeneratorExit:生成器(generator)发生异常来通知退出
  • EOFError:没有内键输入,到达EOF标记
  • IOError:输入/输出操作失败
  • OSError:操作系统错误
  • WindowsError:系统调用失败
  • MemoryError:内存溢出错误(对于python解释器不是致命的)
  • ReferenceError:弱引用(Weak Refence)试图访问已经垃圾回收的对象
  • RuntimeError:一般的运行时错误
  • SystemError:一般的解释器系统错误
  • SystemExit:解释器请求退出
  • KeyboardInterrupt:用户中断执行(通常是输入^C)
  • UnicodeDecodeError:Unicode解码时的错误
  • UnicodeEncodeError:Unicode解码时的错误
  • UnicodeTranslateError:Unicode 转换时的错误

2、问题描述

代码明明写的没啥问题,但一执行就报错 SyntaxError: invalid syntax

报错信息翻译过来就是,语法错误,无效的语法。

3、原因&解决方案。

1)拼写错误,使用了Python不识别的关键字、语句不完整等。比如图中 from写成了form。

2)括号不匹配,比如前文少写了一个括号。

3)缩进错误,python用缩进来区分代码块,检查每个代码块的缩进是不是同一级别的,建议使用空格缩进,不要这里用tab缩进,那里用空格缩进。

4)引号不匹配,比如前文少写了一个引号,或者引号的中英文用混了,或者单双引号用混乱了。

5)未导入模块,比如你想用的函数需要导入其他模块,你以为你导入了,但实际上没有导入,或者模块导入错了。

比如用到 "string.ascii_uppercase[i]: i for i in range(10)",这条语句是为了在range(10)范围内添加字母索引,但是string是属于string模块的,需要在之前 import sting

6)模块冲突,比如你导入了一个模块,想使用这个模块里的函数,但你当前目录下有个同名的"模块",导致python找了你目录下的这个"模块"。

7)python版本不兼容,比如你复制了别人的代码,别人能运行但你啥也没改就运行不了,那就排查版本是不是不一样。

比如python2和python3的代码就是不兼容的,比如python3中 print要加(),python2中print就不用加括号。

python2里的很多函数到了pytyon3里就改名了,或者被遗弃了。把python换成相同的版本就可以了。

8)路径问题,比如路径没写全,路径没有进行转译。

9)忘记在 if, elif, else, for , while, class, def 声明末尾添加 冒号:

或者把 = 当成 == 用了;

或者if else 这类关键词没有对齐。

或者print打印时,字符串没有加引号。

3.1、Linux环境

Linux运行脚本时要在开头指定解释器 #!/usr/bin/env python3,意思是使用python3执行脚本,不指定就会使用系统默认的解释器。

相关推荐
云微客AI剪辑矩阵系统3 分钟前
矩阵新玩法,云微客AI矩阵系统开启新营销大门
人工智能·ai·矩阵·云微客
lose and dream_1110 分钟前
【 2024!深入了解 大语言模型(LLM)微调方法(总结)】
大数据·人工智能·opencv·机器学习·语言模型·自然语言处理·架构
如影随从12 分钟前
04-ArcGIS For JavaScript的可视域分析功能
开发语言·javascript·arcgis·可视域分析
XiaoCCCcCCccCcccC16 分钟前
C语言实现双向链表
c语言·开发语言·链表
十年一梦实验室19 分钟前
【C++】相机标定源码笔记- RGB 相机与 ToF 深度传感器校准类
开发语言·c++·笔记·数码相机·计算机视觉
托尔斯泰1123 分钟前
国产强大免费WAF, 社区版雷池动态防护介绍
网络安全
Tech Synapse23 分钟前
Java循环创建对象内存溢出怎么解决
java·开发语言·jvm
IT·陈寒24 分钟前
Kotlin vs Java:深入解析两者之间的最新差异与优劣(全面指南)
java·python·kotlin
x-cmd24 分钟前
[240704] 苹果获得 OpenAI 董事会观察员席位 | mySCADA myPRO 发现可在设备上远程执行代码漏洞
人工智能·安全·chatgpt·微软·openai·cve·苹果
蜉蝣之翼❉28 分钟前
c++ 简单线程池
开发语言·c++