Python初学者进阶的九大技能

从 JDK8 到 JDK17:CRMEB 框架升级 【摘要】CRMEB开源框架已成功从JDK8升级至JDK17,带来显著性能提升:并发吞吐量提高35%,响应延迟降低40%,资源占用减少25%。升级方案解决87个技术卡点,支持模块化扩展和微服务转型,兼容SpringBoot3.0等新技术。提供基础版到企业级的升级服务,包含代码重构指导和性能调优。经金融级验证的方案可帮助电商平台实现日均10万+UV承载,支付成功率提升至99.7%。现以低于市场30%的价格提供全周期技术支持,助力企业抢占技术先机。 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料、代码以及交流解答点击即可加入


 

Python是一种很棒的语言,语法简单,无需在代码中搜索分号。对于初学者来说,Python是入门最简单的语言之一。

Python有大量的库支持,你还可以安装其他库来增加自己的编程经验。

学了一阵子之后,你可能会觉得:为如此简单的操作写大量的代码有些令人困惑。实际上,事情并没有你想得那么糟。理解其背后的逻辑比写几行代码更为重要。短代码更好,但如果逻辑有问题,那么无论如何你的代码都会有问题。随着经验和创造力的增长,最终你的代码将会变得更短、更好。

 

初学者与中级程序员

那么,对于Python程序员而言,初学者和进阶者有什么区别呢?

本文将重点介绍以下方面:

  • 解决问题和提出问题;
  • XY问题;
  • 理解代码为何起作用(或不起作用);
  • 使用字符串;
  • 使用列表;
  • 使用循环;
  • 使用函数(并正确谈论函数);
  • 面向对象编程;
  • 尊重PEP。

1. 解决问题和提出问题:

程序员缺乏解决问题能力的话,代码出色也是枉然。

如果你解决问题的思维不够发达,可能就无法为你要解决的问题找到最佳的解决方案。编程不仅仅是编写代码,需要解决问题才能有机会出初学者行列。

提出编程相关的问题也很重要。如果不经尝试,就让别人解决你的问题,可能也会出局。这很难,但如果不尝试自己解决问题,你将对解决方案一无所得。

如果想要了解更多关于编程提问的技能,我另有一篇文章,链接如下(英文):How to Ask Questions About Programming:https://medium.com/better-programming/how-to-ask-questions-about-programming-dcd948fcd2bd。

2. XY问题:

“我需要从字符串中提取最后3个字符。”
“不,你不需要。只需文件扩展名。”

XY问题很有趣。你有个X问题,当你调用服务中心时,会寻求Y问题的解决方案,以解决X问题。

上面的案例就是极好的例子。如果想要文件名中的文件扩展名,很容易假设你需要的是最后3个字母。

如何写代码:

 

 

好极了,现在换成photo_of_lochness.jpeg

用户从一开始应该会索要扩展名,最后3个字母是Y问题,而X问题是我们想要扩展名。

 

 

成功了!

你也可以使用标准库 os.path.splitext(),点击这里查看:os.path.splitext():https://www.geeksforgeeks.org/python-os-path-splitext-method/。

3. 理解代码为何起作用(不起作用)

作为新手,你可能要花几天来对付一小段代码。如果这段代码突然起作用了,你可能会感觉放心,然后继续下一段代码。这是最糟糕的事情之一。不理解原因只管运行的做法,可能比不理解代码的为什么不运行更加危险。

不理解为何代码不运行的情况总会发生,当进行故障排除并搞清楚其原因时,思考代码不运行的原因和最终使其运行的因素非常重要。这次学到的知识会带到下一个程序中。

例如,如果多个缩进级别的代码中出现了缩进错误,可以尝试随机调整代码块,然后在最终运行时为自己庆祝。

切记,在大多数IDE中,可以折叠循环和if语句,从而更容易查看正在使用的部分。

右侧是折叠了if/else语句的ATOM

右侧是折叠了if/else语句的ATOM


另一种办法是将你的代码通过 www.pythontutor.com可视化,就可以逐行查看代码运行的方式了。

使用pythontutors执行代码

使用pythontutors执行代码

 

4. 使用字符串:

这部分内容其实与字符串不完全相关,与挖掘Python优雅的库有更大关系。

我们很早就在Python中学过,字符串也可以看作是一串字符。你也可以使用索引访问字符串中的字符。


敏锐的学习者会查看str()所提供的内容,但也可以不查看 str()文档继续编程。

 

查看函数或过程文档可以通过调用 help(str) 或者dir(str)来实现。执行此操作时,你可能会发现一些并不知道的方法,也许你在查看str()时,找到有个名叫 endswith() 的方法,或许能用在某处。

 

 


下面是一些以两种不同方式执行相同操作的代码案例,一种用到了我们才谈过的拆分,还有一种用到了我们刚刚学到的 endswith() :


大多程序员是从来不会把所有文档读遍来学习全部内容的。作为一名程序员,部分工作就是要搜索如何解决问题的信息。

 

5. 使用列表:

 

列表很棒,用途也很广泛。

下面的案例中,我们将整数和字符串混合在了一起:

 

 

 

注意我们是怎么将字符串和整数混合在一起的,如果尝试对其排序,就会报错:

 

 


如果我们想把整数与字母分开要怎么做?一种方式是通过循环来实现,我们可以遍历列表中的所有项目。初学者很早就会使用循环了,循环对于编程也很重要。

代码可能是下面这样的:

 

 

即便有些混乱,这也是一种有效的方式,可以运行,不过经过重构可以用单行来表示!

如果想要生活多些乐趣,请学习Python的列表解析式,下面是同样问题通过列表解析式得出的:

 

 

就是这样!

还没结束!使用过滤器也可以获得同样的结果:

 

 

 

现在你可能明白了,实现同样的结果有很多方法,你必须找出适合你或你团队的那个。

额外知识点

  • 反向列表(或字符串):

     

  • 在列表中加入元素:

     

6. 使用循环:

是否在Python中见过这样的代码?

 

 

你可能发现了,它来自其他语言,这不是Python的风格。在Python中,你可以使用for-each循环:

 


你很快就能发现,这里我们不包含索引。如果想用索引打印要怎么做?在Python中,你可以使用枚举(enumerate参数),这是一种访问所需内容的绝佳方案。

7. 使用函数(并正确谈论函数):

我在从事动画工作时,总是说如果同一个操作重复5次,就应该考虑是否需要写个程序。有些时候花上两周开发一款工具可以节省你六个礼拜的工作时间。

编写代码时,如果发现同一动作执行了不止一次,应该考虑这是过程还是函数,而不只是写写代码。函数会返回内容,过程则只是运行代码,第一个案例是个过程,第二个是函数。

这样说可能会令人困惑,下面是其工作原理的示意图:

 

 

注意print和return的差异,看起来也许很相似,但如果你查看输出结果,函数只会返回发送的名称。

下一个要了解的语法是parameters和arguments,在过程或函数中定义时(红色部分)被称为形参(parameters),当发送名称到过程或函数中(绿色部分)时就叫实参(arguments)了。

下面是些案例:

案例1

 


无需把循环写上3次,只需在过程中写上一次,然后在需要时调用即可。在案例2中,你可以发现代码是如何返回反向列表的。

 

案例2

 

8.面向对象编程

Python是一种面向对象的语言,其强大之处在于对象。将对象视为蓝图,如果使用蓝图,你可以创建该蓝图的实例。也就是说,你可以创建需要的多个蓝图实例,但不会损毁你使用的蓝图。

面向对象编程(OOP)是一个庞大的话题,因此我们不会在本节中涵盖所有你需要了解的内容,但可以通过几个简单的示例帮你入门。

如果你之前读过面向对象编程的相关内容,可能已经厌倦了学生(student)类,但我们又来了。从定义一个名为student的类开始,student会拥有一个名称和一个subject_list:


如果想要创建一个student,可以像这样将其分配给变量:


如果需要更多student,可以使用同一个类并添加另外的姓名:


student1和student2都是student类的实例,它们共享同一个蓝图,但彼此之间并无关系。此时,我们对学生们能做的不多,但我们确实增加了一个主题列表。要填充此列表,我们需要创建方法,你可以调用方法来实现与该类实例的交互。

 

我们更新:


这个类可以用于创建、编辑学生信息,并获取我们存在其中的信息:


将类保存在单独的文件中并导入主代码的操作很常见,在我们的案例中,我们会在student.py文件中创建一个student类,并将其导入我们的main.py文件(本案例中,它们都位于同一个文件夹中)。

 

student类和main.py在使用它

student类和main.py在使用它

 

 

9.尊重PEP

我们经常看到人们在写Python代码时并不尊重PEP(Python增强提案:Python Enhancement Proposals),但我自己会尊重。

当你在开发环境中工作时,遵守标准非常重要——如果不是PEP标准,也至少要遵守公司的标准。

PEP是代码的一组准则,下面是PEP-8的链接(https://www.python.org/dev/peps/pep-0008/),读起来很棒。请确保你通读过一次,了解大概内容。一个典型的案例是snake_case,Python是以snake_case来写的,这代表着我们用下划线来区分词组,即便大学里也会犯错,因此别难过,只要别这样做就行了。

这样写是对的:

 

 

这样是错的:

 

结论

入门是了不起的体验,需要艰苦钻研,但你的学习曲线急遽上升,用新的经验填满你。

也许新手状态很难摆脱,了解你要关注什么是很困难的,下一步呢?

也许本文将你向正确的方向推进了一步,也许只是一堆你已经知道的胡言乱语。如果你不确定下一步该做什么,不要害怕提问。确保你用好了那些比你更有经验的人,对各种意见持开放态度,看看哪些对你有用。如果还没准备好使用某些编程方式,请继续让代码能够运行,同时学些新的和更好的方法。

老版QQ原生表情gif动态 这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。 立即下载

相关推荐

GD-Link离线烧录全攻略:从配置到一键下载的保姆级教程

本文详细介绍了GD-Link离线烧录的全流程,从硬件准备到软件配置,再到一键下载的实战技巧。通过保姆级教程,帮助工程师快速掌握国产MCU的离线烧录技术,适用于产线批量烧录和现场设备维护等场景,显著提升工作效率。

ww90123的博客 652

学习python须知,Python基础进阶需掌握哪些知识点?

Python基础进阶需要掌握哪些知识点?Python将是每个程序员的标配,有编程基础再掌握Python语言对于日后的升职加薪更有利。Python语言简洁利于理解,语法上相对容易能够让开发者更专注于业务逻辑的实现。 Python基础进阶知识点: 一、Web开发 同步框架:Django、Flask;异步框架:Tornado、Sanic;Tornado框架;Git版本控制;HTTP方法以及响应码;关系型数据库:MySQL、PostgreSQL、Oracle;非关系型数据库:Redis、Mongo;日志;项目的部署

weixin_50897235的博客 647

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

Python进阶

简单来说字符集就是一套文字符号及其编码的描述。从20世纪60年代美国标准化组织ANSI发布了第一个计算机字符集ASCII开始,为了处理不同的文字,各大计算机公司,各国政府,以及各种标准化组织发明了几百种字符集,例如我们熟悉的:ASUII、USC、GBK、BIG5…这些不同的字符集从收录到编码都各不相同,给软件的移植和信息的交换带来了很大的困惑。最严重的问题就是字符乱码,这也是到现在为止还影响着每个测试和开发人员的根本问题(1)、开个QQ,开了一个进程;开了迅雷,开了一个进程。

qq_45138120的博客 3723

手把手教你用Payload Dumper工具,把官方卡刷包变成线刷包救砖(附Fastbootd进入方法)

本文详细介绍了如何使用Payload Dumper工具将官方卡刷包转换为线刷包进行救砖操作。通过提取payload.bin文件中的分区镜像,并利用fastbootd模式完成刷写,帮助用户解决安卓设备系统故障问题。文章包含环境搭建、工具使用、常见问题解决方案等实用内容,适合需要刷机救砖的用户参考。

weixin_42639246的博客 616

NMOS管和PMOS管做开关控制电路

NMOS管和PMOS管做开关控制电路

while(1) 3万+

python大神的成长之路_菜鸟程序员的成长之路: Python四大进阶攻略

随着人工智能的发展与应用,Python编程语言受到世界各界人士的关注,编程圈金句从“人生苦短,我学Python”转变成了“学完 Python,可以上天”,Python工程师也成为一个热门职业,就业薪资高,发展前景广阔。小编有个在阿里工作的朋友,这两天和他在聊Python的发展,其实Python已经在不知不觉中发生了非常大的改变。Python这门语言十分高效,只要是和自动化有关系的,它可以发挥出巨大...

weixin_39833290的博客 643

NOIP2008年普及组初赛题目答案及解析

NOIP2008年初赛详细题解

城南蝈蝈 926

史上最全Python学习路线

Python语言开发工具,内容覆盖了计算机原理、网络、Web前端、后端、架构、数据库、项目部署、数据获取、数据提取、数据清洗、数据分析、数据挖掘、机器学习、深度学习、图像识别等领域所需要的全部技术的最新前沿课程。Python语言开发工具,内容覆盖了计算机原理、网络、Web前端、后端、架构、数据库、项目部署、数据获取、数据提取、数据清洗、数据分析、数据挖掘、机器学习、深度学习、图像识别等领域所需要的全部技术的最新前沿课程。------------------------------------结尾。

Saki_Python的博客 3412

告别手动打点计时:用Lauterbach TRACE32的RunTime功能,5分钟搞定嵌入式代码段性能分析

本文深入解析了Lauterbach TRACE32的RunTime功能在嵌入式代码性能分析中的革命性应用。通过硬件级计时原理和非侵入式设计,该功能能快速精确测量代码执行时间,显著提升开发效率,特别适用于汽车电子和工业控制领域。文章还提供了从基础设置到高级分析的完整实战指南,帮助工程师轻松掌握这一强大工具。

weixin_30615767的博客 279

2025年下半年网络工程师案例分析真题及答案解析

2025年下半年网络工程师案例分析真题及答案解析

鹿鸣天涯 1089

python学习-进阶基本知识点总结

python的进阶基本知识包括:正则表达式、函数、面对对象、异常处理、文件操作

weixin_49349476的博客 1573

YOLOv12改进策略【Neck】| arXiv 2024 MAFPN:多分支辅助特征金字塔网络 | 通过双向辅助融合与异构卷积机制,解决传统PAFPN多尺度特征融合不充分与小目标检测不足问题

本文记录的是利用MAFPN颈部结构改进YOLOv12的目标检测网络模型。通过引入双向辅助融合机制优化特征处理流程,在自底向上路径利用 SAF 模块融合主干浅层特征与颈部输出,并保留浅层空间信息,为小目标检测提供更丰富细节;自顶向下路径通过 AAF 模块建立密集连接,聚合浅层高 / 低分辨率层、同级层及前层特征,均衡各层通道数后实现多向梯度信息交互,增强中 / 大目标特征表达。将其应用到中,解决传统特征金字塔在多尺度信息整合中的不足,提升多尺度目标检测的精度与特征表达的丰富性。Multi-Branch Aux

Limiiiing的博客 1256

Python 初学者进阶的九大技能(附代码)

授权自AI科技大本营(ID:rgznai100)本文约4300字,建议阅读9分钟本文为你介绍Python必须掌握的九大技能。以下为译文:Python是一种很棒的语言,语法简单,无需在代码...

数据派THU 458

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python 初学者进阶的九大技能

一个典型的案例是`snake_case`,Python是以`snake_case`来写的,这代表着我们用下划线来区分词组,即便大学里也会犯错,因此别难过,只要别这样做就行了。将类保存在单独的文件中并导入主代码的操作很常见,在我们的案例中,我们会在student.py文件中创建一个`student`类,并将其导入我们的main.py文件(本案例中,它们都位于同一个文件夹中)。不理解为何代码不运行的情况总会发生,当进行故障排除并搞清楚其原因时,思考代码不运行的原因和最终使其运行的因素非常重要。

am1122的博客 155

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: 【Python爬虫】5分钟快速掌握 scrapy 爬虫框架
下一篇: 10个掌握Python列表,集合,元组的示例
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值