Python新手最易踩坑_初学者错误总结

3次阅读

python新手常见五大陷阱:缩进必须统一用4空格;变量名拼写、作用域或分支定义不全致nameerror;可变对象不可作默认参数,应改用none初始化;字符串拼接需类型一致,f-String调用方法勿漏括号。

Python新手最易踩坑_初学者错误总结

Python新手常因忽略语言特性或惯性思维掉进“看似合理实则报错”的坑里。这些错误不难解决,但容易反复出现、耽误学习节奏。

缩进不当:不是风格问题,是语法硬性要求

Python用缩进来定义代码块,而非大括号。混用空格和Tab、缩进多一层或少一层,都会直接触发IndentationErrorTabError

  • 编辑器务必设为“显示空白字符”,确认统一用4个空格(PEP 8推荐)
  • 复制他人代码时,粘贴后全选→重新缩进(多数编辑器支持Ctrl+Shift+I或Cmd+Shift+I)
  • 不要手动敲Tab键——ide通常会自动转成空格;若手动敲了,检查设置里是否启用了“Tab转空格”

变量未定义就使用:名字错了、拼写漏了、作用域搞混了

NameError: name ‘xxx’ is not defined 是新手最高频报错。常见原因有三种:

  • 变量名打错:比如定义了user_name,却写了username(少下划线)
  • 在函数内修改全局变量但没声明:count = 0在函数外,函数里写count += 1会报错,需加global count
  • 条件分支中只在某一分支定义变量:if里赋值了result,else没赋,后续直接用就会报错

可变对象当默认参数:函数多次调用结果“串了”

def add_item(item, lst=[]): lst.append(item); return lst看似正常,但第二次调用会发现列表里有前一次的元素——因为[]在函数定义时只创建一次,后续每次调用都复用同一个列表对象。

立即学习Python免费学习笔记(深入)”;

  • 正确写法:用None作默认值,函数内再初始化:def add_item(item, lst=None): if lst is None: lst = []
  • 这个坑对字典、集合等可变类型同理,切记:所有可变对象都不该当默认参数

字符串拼接与格式化误用:+ 和 f-string 混搭出错

想打印"年龄:" + age,但age是整数,会报TypeError: can only concatenate str…;又或者用f-string时写成f"姓名:{name.upper}"(漏了括号),结果输出的是方法对象地址而非大写字符串。

  • 拼接前统一转成字符串:"年龄:" + str(age)
  • f-string里调用方法必须带括号:f"姓名:{name.upper()}"
  • 不确定类型时,优先用f-string或.format(),它们会自动做类型转换
text=ZqhQzanResources