当前位置: 首页 > news >正文

Python 新手最容易踩的坑

Python新手最容易踩的坑

  • 缩进错误
  • 忘记引入模块
  • 使用未定义的变量
  • 不理解变量作用域
  • 字符串格式化错误
  • 乱用关键字
  • 多余的符号
  • 本期图书推荐:Python算法小讲堂---39个算法案例带你玩转Python
    • 内容简介
    • 获取方式

在学习 Python 的过程中,新手往往会遇到一些常见的陷阱,这些陷阱可能会导致代码错误或者不符合预期。本文将介绍一些 Python 新手最容易踩到的坑,并提供一些解决方案,帮助读者避免这些陷阱。

缩进错误

Python 使用缩进来表示代码块,而不是像其他编程语言那样使用大括号。因此,缩进错误是新手经常遇到的问题之一。在 Python 中,同一个代码块内的语句必须具有相同的缩进级别。

if True:
print("Indented incorrectly!")  # 这行代码缩进错误

✨解决方案: 在编辑器中启用缩进显示,并始终保持一致的缩进风格,通常是使用四个空格。

忘记引入模块

Python 中的模块是可重用的代码单元,但是在使用模块中的函数或变量之前,必须先引入它们。如果忘记引入模块,Python 解释器将无法识别模块中的内容。

# 没有引入 math 模块
result = math.sqrt(25)

✨解决方案: 在代码的开头引入所有需要使用的模块,或者使用完整的模块名称来调用函数或变量。

使用未定义的变量

在使用变量之前,必须先对其进行定义。如果使用了未定义的变量,Python 解释器会引发 NameError 异常。

print(x)  # x 未定义

✨解决方案: 确保在使用变量之前进行定义,并避免使用未定义的变量。

不理解变量作用域

Python 中的变量作用域分为全局作用域和局部作用域。在函数内部定义的变量通常具有局部作用域,而在函数外部定义的变量具有全局作用域。在函数内部使用全局变量时,需要使用 global 关键字声明。

x = 10def increment():x += 1  # 尝试修改全局变量 x,会引发 UnboundLocalError 异常increment()

✨解决方案: 理解 Python 中的变量作用域规则,并注意在函数内部正确处理全局变量。

字符串格式化错误

在 Python 中,有多种方式可以格式化字符串,例如使用 % 运算符、str.format() 方法或者 f-字符串。如果格式化字符串时出现错误,可能会导致程序崩溃或者输出不正确的结果。

name = "Alice"
age = 30
print("Her name is %s and she is %d years old" % name, age)  # 格式化错误

✨解决方案: 熟悉不同的字符串格式化方法,并确保格式化字符串与提供的参数数量和类型匹配。

乱用关键字

Python 中有许多保留的关键字,这些关键字具有特定的含义,并被用于编程语言的语法和结构中。新手可能会误用这些关键字,导致代码出错或无法正常运行。
示例:

# 尝试将关键字作为变量名True = False
None = 10

✨解决方案: 避免将保留关键字用作变量名或标识符。如果不确定某个名称是否为关键字,可以通过以下代码查看

import keyword  # 引入关键字模块print(keyword.kwlist)  # 打印关键字列表

多余的符号

在编写 Python 代码时,多余的符号可能会导致语法错误或者代码行为不符合预期。这些符号包括不必要的空格、括号、逗号等。
示例:

# 不必要的空格
x =  10   + 5# 多余的逗号
numbers = [1, 2, 3,]# 不匹配的括号
result = (5 + 3
print(result)

✨解决方案: 仔细检查代码,删除多余的符号,并确保符号的使用符合 Python 的语法规范。建议使用代码编辑器或 IDE 提供的自动格式化功能来帮助排除多余的符号。

本期图书推荐:Python算法小讲堂—39个算法案例带你玩转Python

内容简介

推荐博主经常看的一本Python算法类书籍,
《Python算法小讲堂(视频精讲版)》通过由浅入深的39个Python语言实际案例,不仅帮助初学者学习Python语言的基本使用,还可以使读者从数据、算法等多个角度体验编程的魅力。本书从“如何解决问题”出发,讲述了常用的人工智能编程语言——Python语言的基本使用,帮助读者学习如何进行简单的数据处理,了解什么是算法,领略算法的魅力。当然,最终都是让初学者一行行地亲手写出代码,在计算机上运行自己写出的程序。

在这里插入图片描述

获取方式

京东购买链接:https://item.jd.com/14294684.html

在这里插入图片描述

相关文章:

  • Scrapy 爬取m3u8视频
  • 基于springboot实现墙绘产品展示交易平台管理系统项目【项目源码+论文说明】
  • 基于BP神经网络的时间序列预测模型matlab代码
  • Spark-Scala语言实战(11)
  • loopvar 改动不同版本的影响-并发
  • 4.2.k8s的pod-标签管理、镜像拉取策略、容器重启策略、资源限制、优雅终止
  • Clion 输出乱码 解决方案
  • LeetCode热题100
  • 编程:不只是工作,是我生活的一部分
  • Linux服务篇之FTP及SFTP
  • 数字电子技术基础入门(三)
  • [xboard]real6410-3 S3C6410光盘资料与功能测试
  • Pandas学习笔记——第二弹
  • C++修炼之路之string--标准库中的string
  • neo4j图数据库下载安装配置
  • 「面试题」如何实现一个圣杯布局?
  • Akka系列(七):Actor持久化之Akka persistence
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • conda常用的命令
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • FineReport中如何实现自动滚屏效果
  • k8s如何管理Pod
  • MySQL主从复制读写分离及奇怪的问题
  • Node 版本管理
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 关于extract.autodesk.io的一些说明
  • 技术胖1-4季视频复习— (看视频笔记)
  • 聊聊redis的数据结构的应用
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 爬虫模拟登陆 SegmentFault
  • 前端临床手札——文件上传
  • 前端性能优化--懒加载和预加载
  • 项目实战-Api的解决方案
  • 小程序开发中的那些坑
  • 原生Ajax
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 自制字幕遮挡器
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # include “ “ 和 # include < >两者的区别
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (1)SpringCloud 整合Python
  • (C语言)二分查找 超详细
  • (LeetCode 49)Anagrams
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (二)丶RabbitMQ的六大核心
  • (三)终结任务
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)编辑寄语:因为爱心,所以美丽
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...