爆肝整理总结了90条简单实用的Python编程技巧!

S盒+异或+循环密钥:Windows PE查表逆向实战详解 阅读详情

编码原则

**建议1:**理解 Pythonic 概念—-详见 Python 中的《Python之禅》

**建议2:**编写 Pythonic 代码

(1)避免不规范代码,比如只用大小写区分变量、使用容易混淆的变量名、害怕过长变量名等。有时候长的变量名会使代码更加具有可读性。

(2)深入学习 Python 相关知识,比如语言特性、库特性等,比如Python演变过程等。深入学习一两个业内公认的 Pythonic 的代码库,比如Flask等。

**建议3:**理解 Python 与 C 的不同之处,比如缩进与 {},单引号双引号,三元操作符?, Switch-Case 语句等。

**建议4:**在代码中适当添加注释

**建议5:**适当添加空行使代码布局更加合理

**建议6:**编写函数的 4 个原则

(1)函数设计要尽量短小,嵌套层次不宜过深

(2)函数声明应该做到合理、简单、易用

(3)函数参数设计应该考虑向下兼容

(4)一个函数只做一件事,尽量保证函数粒度的一致性

**建议7:**将常量集中在一个文件,且常量名尽量使用全大写字母

编程惯用法

**建议8:**利用 assert 语句来发现问题,但要注意,断言 assert 会影响效率

**建议9:**数据交换值时不推荐使用临时变量,而是直接 a, b = b, a

**建议10:**充分利用惰性计算(Lazy evaluation)的特性,从而避免不必要的计算

**建议11:**理解枚举替代实现的缺陷(最新版 Python 中已经加入了枚举特性)

**建议12:**不推荐使用 type 来进行类型检查,因为有些时候 type 的结果并不一定可靠。如果有需求,建议使用 isinstance 函数来代替

**建议13:**尽量将变量转化为浮点类型后再做除法(Python3 以后不用考虑)

**建议14:**警惕eval()函数的安全漏洞,有点类似于 SQL 注入

**建议15:**使用 enumerate() 同时获取序列迭代的索引和值

**建议16:**分清 == 和 is 的适用场景,特别是在比较字符串等不可变类型变量时(详见评论)

**建议17:**尽量使用 Unicode。在 Python2 中编码是很让人头痛的一件事,但 Python3 就不用过多考虑了

**建议18:**构建合理的包层次来管理 Module

编程惯用法2

**建议19:**有节制的使用 from…import 语句,防止污染命名空间

**建议20:**优先使用 absolute import 来导入模块(Python3中已经移除了relative import)

**建议21:**i+=1 不等于 ++i,在 Python 中,++i 前边的加号仅表示正,不表示操作

**建议22:**习惯使用 with 自动关闭资源,特别是在文件读写中

**建议23:**使用 else 子句简化循环(异常处理)

**建议24:**遵循异常处理的几点基本原则 (1)注意异常的粒度,try 块中尽量少写代码

(2)谨慎使用单独的 except 语句,或 except Exception 语句,而是定位到具体异常

(3)注意异常捕获的顺序,在合适的层次处理异常

(4)使用更加友好的异常信息,遵守异常参数的规范

**建议25:**避免 finally 中可能发生的陷阱

**建议26:**深入理解 None,正确判断对象是否为空。

**建议27:**连接字符串应优先使用 join 函数,而不是+操作

**建议28:**格式化字符串时尽量使用 format 函数,而不是 % 形式

**建议29:**区别对待可变对象和不可变对象,特别是作为函数参数时

**建议30:[], {}和():一致的容器初始化形式。使用列表解析可以使代码更清晰,同时效率更高

**建议31:**函数传参数,既不是传值也不是传引用,而是传对象或者说对象的引用

**建议32:**警惕默认参数潜在的问题,特别是当默认参数为可变对象时

**建议33:**函数中慎用变长参数 args 和 kargs

(1)这种使用太灵活,从而使得函数签名不够清晰,可读性较差

(2)如果因为函数参数过多而是用变长参数简化函数定义,那么一般该函数可以重构

**建议34:**深入理解 str()和 repr() 的区别

(1)两者之间的目标不同:str 主要面向客户,其目的是可读性,返回形式为用户友好性和可读性都比较高的字符串形式;而 repr 是面向 Python 解释器或者说Python开发人员,其目的是准确性,其返回值表示 Python 解释器内部的定义

(2)在解释器中直接输入变量,默认调用repr函数,而print(var)默认调用str函数

(3)repr函数的返回值一般可以用eval函数来还原对象

(4)两者分别调用对象的内建函数 str ()和 repr ()

**建议35:**分清静态方法 staticmethod 和类方法 classmethod 的使用场景

库的使用

**建议36:**掌握字符串的基本用法

**建议37:**按需选择 sort() 和 sorted() 函数

sort() 是列表在就地进行排序,所以不能排序元组等不可变类型。

sorted() 可以排序任意的可迭代类型,同时不改变原变量本身。

**建议38:**使用copy模块深拷贝对象,区分浅拷贝(shallow copy)和深拷贝(deep copy)

**建议39:**使用 Counter 进行计数统计,Counter 是字典类的子类,在 collections 模块中

**建议40:**深入掌握 ConfigParse

**建议41:**使用 argparse 模块处理命令行参数

**建议42:**使用 pandas 处理大型 CSV 文件

Python 本身提供一个CSV文件处理模块,并提供reader、writer等函数。

Pandas 可提供分块、合并处理等,适用于数据量大的情况,且对二维数据操作更方便。

**建议43:**使用 ElementTree解析XML

**建议44:**理解模块 pickle 的优劣

优势:接口简单、各平台通用、支持的数据类型广泛、扩展性强

劣势:不保证数据操作的原子性、存在安全问题、不同语言之间不兼容

**建议45:**序列化的另一个选择 JSON 模块:load 和 dump 操作

**建议46:**使用 traceback 获取栈信息

**建议47:**使用 logging 记录日志信息

**建议48:**使用 threading 模块编写多线程程序

**建议49:**使用 Queue 模块使多线程编程更安全

设计模式

**建议50:**利用模块实现单例模式

**建议51:**用 mixin 模式让程序更加灵活

**建议52:**用发布-订阅模式实现松耦合

**建议53:**用状态模式美化代码

内部机制

**建议54:**理解 build-in 对象

建议55:__init__ ()不是构造方法,理解 new ()与它之间的区别

**建议56:**理解变量的查找机制,即作用域

局部作用域

全局作用域

嵌套作用域

内置作用域

**建议57:**为什么需要self参数

**建议58:**理解 MRO(方法解析顺序)与多继承

**建议59:**理解描述符机制

**建议60:**区别 getattr ()与 getattribute ()方法之间的区别

**建议61:**使用更安全的 property

**建议62:**掌握元类 metaclass

**建议63:**熟悉 Python 对象协议

**建议64:**利用操作符重载实现中缀语法

**建议65:**熟悉 Python 的迭代器协议

**建议66:**熟悉 Python 的生成器

**建议67:**基于生成器的协程和 greenlet,理解协程、多线程、多进程之间的区别

**建议68:**理解 GIL 的局限性

**建议69:**对象的管理和垃圾回收

使用工具辅助项目开发

**建议70:**从 PyPI 安装第三方包

**建议71:**使用 pip 和 yolk 安装、管理包

**建议72:**做 paster 创建包

**建议73:**理解单元测试的概念

**建议74:**为包编写单元测试

**建议75:**用测试驱动开发(TDD)提高代码的可测性

**建议76:**使用 Pylint 检查代码风格

代码风格审查

代码错误检查

发现重复以及不合理的代码,方便重构

高度的可配置化和可定制化

支持各种 IDE 和编辑器的集成

能够基于 Python 代码生成 UML 图

能够与 Jenkins 等持续集成工具相结合,支持自动代码审查

**建议77:**进行高效的代码审查

**建议78:**将包发布到 PyPI

性能剖析与优化

**建议79:**了解代码优化的基本原则

**建议80:**借助性能优化工具

**建议81:**利用 cProfile 定位性能瓶颈

**建议82:**使用 memory_profiler 和 objgraph 剖析内存使用

**建议83:**努力降低算法复杂度

**建议84:**掌握循环优化的基本技巧

减少循环内部的计算

将显式循环改为隐式循环,当然这会牺牲代码的可读性

在循环中尽量引用局部变量

关注内层嵌套循环

**建议85:**使用生成器提高效率

**建议86:**使用不同的数据结构优化性能

**建议87:**充分利用 set 的优势

**建议88:**使用 multiprocessing 模块克服 GIL 缺陷

**建议89:**使用线程池提高效率

**建议90:**使用 Cythonb 编写扩展模块

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。让你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

点击免费领取《CSDN大礼包》:Python入门到进阶资料 & 实战源码 & 兼职接单方法 安全链接免费领取

【优化调度】基于混合整数线性规划的电力系统机组组合优化(Matlab实现) 本文详细介绍了基于混合整数线性规划(MILP)的电力系统机组组合优化方法,通过Matlab实现高效调度决策。内容涵盖目标函数构建、约束件设置及求解器调优,帮助降低发电成本并提升系统稳定性。适用于电力系统调度员和能源优化研究人员,实现从理论到实践的完整解决方案。 阅读详情

相关推荐

如何构建高质量的 QA 问答知识库

NLP 技术落地最普遍的场景就是智能客服,如阿里的”小蜜“,京东的“JIMI”等等。NLP 技术也广泛应用于搜索系统。无论是“智能客服”,还是“搜索系统”,构建的前提是拥有“高质量的QA知识库”。今天聊聊“如何构建高质量QA知识库。”。 历史对话数据分布分析 基于公司现有系统积累的大规模对话文本数据,需要对文本数据进行归类处理,分析每个部分数据的占比,挖掘出有价值的文本通过 NLP 相关技术进行商业价值转化。下文以医疗领域来举例说明,通过输入对象,可以将文本分为客服输入和用户输入两部分。挖掘相关问题,主要从

Jiassheng的博客 2106

Python高手的10编程建议,第5你中招了吗?90%程序员都踩过坑!

你是否在编程过程中遇到过难以调试的错误,或是代码结构混乱难以维护?​这些问题可能源于一些常见的编程误区。​本文将分享Python大佬总结的10编程忠告,帮助你避免这些坑,提高编程效率。Python的简洁让无数开发者着迷,但你是否曾因一个“优雅”的代码翻车,导致调试到深夜?编程不仅是写代码,更是一门需要智慧和经验的艺术。Python大佬们用血泪总结的10忠告,句句戳中痛点,尤其是第5——90%程序员都曾踩过的坑,堪称“真实到窒息”!想知道这些忠告如何让你从新手进阶为高手?快来看看吧!

朱雀随云记的博客 1224

Python Class 参数传递完全指南

Python Class 参数传递完全指南:1.1 实例方法(最常用)1.2 类方法(@classmethod)1.3 静态方法(@staticmethod)2. 嵌套函数(def 内嵌 def)的 4 种传参方式2.1 闭包捕获(读取外层)2.2 显式传递(推荐用于灵活传参)2.3 nonlocal 修改外层2.4 使用 self 传递(共享状态)3. 继承中的参数传递(super())4. 灵活传参:*args 与 **kwargs5. 嵌套层级过深时的最佳实践(工程建议)

m0_54652313的博客 11

10个实用Python编程实例,助你快速掌握Python技巧

通过以上10个实用Python编程实例,我们可以学习到许多基本的Python编程技巧,并在实际项目中灵活运用。希望本文所提供的实例能够帮助读者加深对Python的理解,并成为熟练的Python开发者!

qq_41314882的博客 5062

7 年 Python 的我,总结了这 90 Python 程序的建议

本文于网络整理,版权归原作者所有 自己写 Python 也有四五年了,一直是用自己的“强迫症”在维持自己代码的质量。都有去看Google的Python代码规范,对这几年的工作经验,做个简单的笔记,如果你也在学pythpn,准备要学习python,希望这篇文章对你有用。 1. 首先 建议1、理解Pythonic概念—-详见Python中的《Python之禅》 建议2、编写Pythonic代码 (1)避免不规范代码,比如只用大小写区分变量、使用容易混淆的变量名、害怕过长变量名等。有时候长..

bigzql的博客 1万+

总结了 90 Python 程序的建议

本文于网络整理,版权归原作者所有这是一名5年经验的 Python小伙伴总结的90python建议,如果你也在学pythpn,准备要学习python,希望这篇文章对你有用。1. 首先 建...

tongtongjing1765的博客 1816

3天,整理90个 NumPy 例子,不能不收藏!

Numpy 是什么就不太过多介绍了,懂的人都懂! 文章很长,高低要忍一下,如果忍不了,那就收藏吧,总会用到的 萝卜哥也贴心的做成了PDF,在文末获取! 有多个件时替换 Numpy 数组中的元素将所有大于 30 的元素替换为 0将大于 30 小于 50 的所有元素替换为 0给所有大于 40 的元素加 5用 Nan 替换数组中大于 25 的所有元素将数组中大于 25 的所有元素替换为 1,否则为 0在 Python 中找到 Numpy 数组的维度两个件过滤 NumPy 数组Example 1Example

周萝卜的博客 741

【MCP(Model Context Protocol)开发到发布完整指南】

MCP(Model Context Protocol)开发到发布完整指南

晨埃 230

Agent 记忆压缩通常有哪些方法?

在传统软件中,状态可以通过关系型数据库做毫秒级精准存取;而在 AI Agent 架构中,大模型本身是无状态的概率推理引擎。为了维持多轮交互的连续性,开发者必须将历史记忆注入到上下文(Context)中。上下文炸与成本失控:多轮对话与工具调用轨迹(Tool Traces)包含海量冗余 Token,每次 API 请求都需要对全量历史重复计费,成本呈二次方上升。推理延迟(Latency)恶化:超长上下文会导致 GPU 在 Prefill 阶段的计算耗时大幅拉长,严重破坏实时交互体验。

2603_96126046的博客 285

Gradio 极简入门:三分钟为AI模型打造交互界面,并对比Streamlit与Dash如何选型

Gradio 极简入门:三分钟为AI模型打造交互界面,并对比Streamlit与Dash如何选型

算法工程师 457

Python 批量压测代理质量:延迟与成功率统计脚本

上一篇《爬虫代理选型指南》里提到,选代理不要只看商家宣传页,要自己实测五项:可用率、延迟、并发达标率、出口一致性、失败形态。这篇就把其中最核心的两项——延迟和成功率——做成一套可以直接跑的脚本。任何一家的代理,跑一遍就知道成色。

weixin_44617651的博客 41

基于Python的爱奇艺视频数据可视化分析系统

长视频平台剧集、评分、热度与评论数据体量大、维度多,手工汇总难以快速把握类型结构、口碑分布与主演导演影响力。系统采用 B/S 架构,后端入口为app.py,运行端口8060;数据库使用 MySQL(库名iqiyi),经 PyMySQL 访问。前台基于 Bootstrap 5、本地中的 ECharts 5 与 echarts-wordcloud,配合主题。业务表包括usersdramascommentsfavorites。数据可通过导入,或经/ 相关脚本补充样本。分析层在。

qq_35928134的博客 201

Java深入解析篇二十之JavaStream API详解

Stream(流)是引入的数据处理抽象,位于包。它表示从数据源产生的元素序列,并支持对其进行函数式、聚合式操作。不是集合:流不存储数据,只描述对数据的计算;不是 IO 流:与无关;惰性管道:中间操作只是登记,终端操作才触发实际计算。// 命令式写法(对照) // List<String> r = new ArrayList<>();

萧瑟余晖的博客 331

Django的手机数据分析与可视化

Django的手机数据分析与可视化系统 摘 要 本系统基于Django框架、HTML和MySQL数据库技术,构建了一个全面的手机数据分析与可视化平台。大屏内容丰富,包括品牌市场份额分布、手机价格区间分布、各维度评分分布、热门机型Top10、内存容量分布以及品牌评分与价格分析等多个模块。通过这些模块,用户可以直观地了解手机市场的整体趋势、各品牌的市场表现、手机价格分布情况、用户评分分布以及热门机型的详细信息。系统采用了先进的可视化技术,将复杂的数据以图表的形式呈现,使得数据更加易于理解和分析。 在管理功能方

weixin_41915110的博客 650

Pixhawk 6C — Mission Planner 烧录 & 全套校准教程

适用于自行编译的 ArduPilot 固件。

2301_76633800的博客 283

Python量化实战:如何检测并剔除历史数据中的“闪崩/乌龙指”异常价格点?

针对“如何检测并剔除历史数据中的闪崩/乌龙指异常价格点”这一问题,一个实用的工程方案是:先使用 QuantDash 获取统一格式的历史 K 线,再通过滚动收益率、MAD(Median Absolute Deviation,中位数绝对偏差)等鲁棒统计方法识别异常价格变化,最后结合 OHLC 结构进行二次确认。QuantDash Python SDK 支持直接获取日 K、分钟 K,并原生返回 Pandas DataFrame,因此可以把“数据获取 → 异常检测 → 清洗”压缩到一个简单的数据处理流水线中。

weixin_45515140的博客 612

基于Neo4j的知识图谱和问答案例源码+文档+全部资料.zip

【资源说明】基于Neo4j的知识图谱和问答案例源码+文档+全部资料.zip【备注】1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。欢迎下载,沟通交流,互相学习,共同进步!

上一篇: 7 个流行的强化学习算法及代码实现!
下一篇: 汇总17个工作必备的Python自动化代码
田野猫咪
博客等级 码龄3年 5012粉丝 502原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值