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个字母。

如何写代码:

def extract_ext(filename):
    return filename[-3:]
print (extract_ext('photo_of_sasquatch.png'))
>>> png

好极了,现在换成photo_of_lochness.jpeg:

70.jpg

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

def extract_ext(filename):
    return filename.split('.')[-1]
print (extract_ext('photo_of_sasquatch.png'))
print (extract_ext('photo_of_lochness.jpeg'))
>>> png
>>> jpeg

成功了!

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


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

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

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

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

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

71.jpg

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

相关文章
|
3月前
|
安全 Python
Python并发编程必备技能:掌握threading模块,让你的代码跑得更快!
【8月更文挑战第22天】Python并发编程采用多线程技术实现任务的同时执行。利用`threading`模块可轻松管理和创建线程。通过`Thread`类实例化线程并用`start()`方法启动。线程同步通过`Lock`确保资源访问互斥,或用`Semaphore`控制并发数量。线程间通信则可通过`Queue`安全传递数据,实现生产者-消费者模式等功能。这些工具有效避免了竞态条件,确保了程序的正确性和效率。
56 1
|
3月前
|
测试技术 持续交付 Apache
深度挖掘:Python性能测试中JMeter与Locust的隐藏技能🔍
【8月更文挑战第5天】随着软件规模扩大,性能测试对系统稳定性至关重要。Apache JMeter和Locust是两大主流工具,各有千秋。本文探索它们在Python环境下的进阶用法,挖掘更多性能测试潜力。JMeter功能强大,支持多种协议,可通过命令行模式执行复杂测试计划,并与Python集成实现动态测试数据生成。Locust基于Python,通过编写简洁脚本模拟HTTP请求,支持自定义请求及与Python库深度集成。掌握这些技巧可实现高度定制化测试场景,有效识别性能瓶颈,提升应用稳定性。
127 1
|
1月前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
69 2
|
2月前
|
存储 大数据 索引
解锁Python隐藏技能:构建高效后缀树Suffix Tree,处理大数据游刃有余!
通过构建高效的后缀树,Python程序在处理大规模字符串数据时能够游刃有余,显著提升性能和效率。无论是学术研究还是工业应用,Suffix Tree都是不可或缺的强大工具。
48 6
|
2月前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
在数据驱动时代,Python凭借简洁的语法和强大的库支持,成为数据分析与机器学习的首选语言。Pandas和NumPy是Python数据分析的基础,前者提供高效的数据处理工具,后者则支持科学计算。TensorFlow与PyTorch作为深度学习领域的两大框架,助力数据科学家构建复杂神经网络,挖掘数据深层价值。通过Python打下的坚实基础,结合TensorFlow和PyTorch的强大功能,我们能在数据科学领域探索无限可能,解决复杂问题并推动科研进步。
62 0
|
3月前
|
算法 关系型数据库 程序员
程序员必备技能)基于Python的鼠标与键盘控制实战扩展与源码
这篇文章是关于如何使用Python的`pyautogui`库来控制鼠标和键盘进行各种操作,包括移动、点击、滚轮控制以及键盘的按键和快捷键输出,并介绍了如何结合图像处理和计算机视觉技术来扩展其应用。
|
4月前
|
数据采集 网络协议 数据挖掘
网络爬虫进阶之路:深入理解HTTP协议,用Python urllib解锁新技能
【7月更文挑战第30天】网络爬虫是数据分析和信息聚合的关键工具。深入理解HTTP协议及掌握Python的urllib库对于高效爬虫开发至关重要。HTTP协议采用请求/响应模型,具有无状态性、支持多种请求方法和内容协商等特点。
51 3
|
4月前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
【7月更文挑战第31天】在数据驱动时代,Python凭借其简洁性与强大的库支持,成为数据分析与机器学习的首选语言。**数据分析基础**从Pandas和NumPy开始,Pandas简化了数据处理和清洗,NumPy支持高效的数学运算。例如,加载并清洗CSV数据、计算总销售额等。
61 2
|
4月前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
【7月更文挑战第25天】在网络技术快速发展的背景下, Python因其简洁的语法和强大的库支持成为学习网络编程的理想选择。
69 5
|
4月前
|
机器学习/深度学习 数据采集 算法
Python编程语言进阶学习:深入探索与高级应用
【7月更文挑战第23天】Python的进阶学习是一个不断探索和实践的过程。通过深入学习高级数据结构、面向对象编程、并发编程、性能优化以及在实际项目中的应用,你将能够更加熟练地运用Python解决复杂问题,并在编程道路上走得更远。记住,理论知识只是基础,真正的成长来自于不断的实践和反思。