Python新手常见错误汇总_避坑学习经验分享【教学】

Python新手常见四大坑:缩进错误(须统一4空格)、变量未定义即使用(需先赋值后调用)、可变对象作默认参数(应改用None+内部初始化)、字符串与数字混拼(推荐f-string)。

刚学Python时踩的坑,往往不是语法多难,而是细节没注意、习惯没养成。下面这些错误,90%的新手都遇到过,搞懂它们,能少走半年弯路。

缩进错误:Python的“呼吸感”不能乱

Python靠缩进来定义代码块,而不是大括号。空格和Tab混用、多缩进或少缩进,都会直接报 IndentationError

  • 统一用4个空格(别用Tab),编辑器设为“Tab转为空格”
  • 复制别人代码时,粘贴后检查缩进是否整齐——尤其if/for/def后面冒号后的下一行
  • 报错提示里写的行号,往往是缩进出问题的下一行,往前看才对

变量未定义就使用:名字还没“出生”,你就喊它

写完a = 5,却在前面就print(a),会报 NameError: name 'a' is not defined。这不是拼写错误,是执行顺序问题。

  • Python从上到下逐行执行,变量必须先赋值再使用
  • 函数内部用的变量,如果想用外面的,记得加 global 声明(但初学者建议先避免全局变量)
  • 调试时在报错行前加 print(type(x)) 或 dir(),快速确认变量是否存在、是否拼错

可变对象当默认参数:悄悄改掉你的函数“底子”

写 def func(items=[]),第一次调用正常,第二次调用发现 items 里多了上次的数据——这是经典陷阱。

  • 默认参数在函数定义时就生成一次,且只生成一次。列表、字典等可变对象会持续被修改
  • 正确写法:用 None 作默认值,函数内再初始化:def func(items=None): items = items or []
  • 字符串、数字、None 等不可变类型当默认参数是安全的

字符串拼接与格式化:+号很顺手,但容易翻车

用 + 拼接字符串和数字,比如 "age: " + 25,会报 TypeError:不能把str和int直接相加。

  • 数字转字符串用 str(25),或改用 f-string:f"age: {25}"(推荐,清晰又高效)
  • 用 % 或 .format() 也行,但f-string是Python 3.6+首选,支持表达式、函数调用
  • 拼接大量字符串时,用 ''.join(list) 比反复 + 更快(虽新手阶段影响不大,但早知道不踩坑)

这些错误看着小,但卡住新手最久。不是你不会,是Python把“隐含规则”摆得特别直——缩进即逻辑,顺序即流程,对象特性决定行为。多练几次,自然就形成肌肉记忆了。