IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:Python

共 183 篇相关文章

IT 累计浏览 17,828

每个程序员都应该学习使用Python或Ruby

这篇讲的是程序员是否需要学习Python或Ruby。作者从翻译一篇经典文章出发,核心是对当前主流编程语言做了一次横向对比。 文章将Python/Ruby与C/C++/Java、VB/PHP、Lisp系、Perl以及Shell脚本分别进行了比较。作者指出,相比Java等语言,Python/Ruby能以约五分之一的代码量完成相同任务,极大提升了单个程序员的产出效率。与设计感较差的PHP/VB相比,它们语言设计更优。同时,它们又比Lisp等“酷”语言更“主流”和实用,在功能与工程应用间取得了良好平衡。对于Perl,作者认为它虽曾辉煌,但已逐渐被Python/Ruby取代,对新人不够友好。 作者的核心观点是,掌握Python或Ruby能让学生和程序员更高效地完成项目(甚至节省一半时间),并推荐阅读文章中给出的官方学习资源,比如谷歌Python课程。文末附带的xkcd漫画,生动描绘了Python赋予程序员的“超能力”。

IT 累计浏览 2,124

给Python的MySQLdb模块加功能

这篇讲的是如何为广泛使用的Python MySQLdb模块添加自定义功能。作者从实际项目需求出发,指出原生MySQLdb在连接池管理和查询便捷性上的不足,随后通过源码分析,展示了模块内部的连接管理与查询执行机制。核心实现思路是围绕模块的Connection和Cursor类进行子类化与装饰器封装,在不侵入原有代码的前提下,动态注入了连接池复用和查询结果字典化等实用能力。文章亮点在于其非侵入式的设计,通过Python的猴子补丁(monkey-patching)技巧与上下文管理器,优雅地解决了扩展问题,既保持了兼容性,又显著提升了开发与运维效率。这种“小刀锯大树”的实现方式,为如何安全地扩展成熟开源库提供了清晰的技术路径。

IT 累计浏览 35,210

程序员技术练级攻略

这篇讲的是程序员如何规划技术成长路径。文章源于月光博客的一位读者反馈,他希望看到更具操作性的技术进阶指南。于是,作者结合新手朋友分享的Python与Web编程学习点滴,并融入自己作为资深开发者的经验,共同撰写了这篇攻略。 从内容上看,它并非单纯的理论罗列,而是融合了真实的学习历程。文章从Python等语言的基础入门讲起,延伸至Web编程的具体实践,最后还特别增设了“进阶”一节。这种由浅入深、兼顾新手入门与老手提升的结构,使得文章既有起点的参照,也有前进的方向。 它的特别之处在于视角的结合——既保留了初学者可能遇到的困惑与摸索过程,又提供了过来人总结的有效方法与避坑建议。对于那些处于技术成长期,想要清晰规划自己学习路线的程序员来说,这种基于真实经历的分享,比单纯的知识点罗列更具参考价值。

IT 累计浏览 9,030

Python抓取框架:Scrapy的架构

这篇从“想用Python抓点数据”的实际需求出发,带读者拆解了Scrapy这个高效爬虫框架的核心骨架。作者没有停留在用法层面,而是深入其内部,清晰勾勒出数据流从“请求”到“持久化”的完整旅程。 文章的核心在于解析Scrapy如何通过组件化设计来实现高性能爬取。比如,它解释了Scrapy Engine如何作为“中央调度器”协调各个部件;Scheduler(调度器)如何管理请求队列避免重复下载;Downloader(下载器)与中间件(Middleware)如何配合,异步处理网络请求并实现灵活的预处理与后处理;Spiders(爬虫)作为业务逻辑核心,如何产出数据并交给Item Pipeline进行清洗和存储。 这种分层、可插拔的架构,正是Scrapy能轻松应对复杂爬取场景、并保持高扩展性的关键。了解这些,你才能明白为什么自定义中间件可以轻松添加代理或设置Headers,以及如何更好地规划自己的爬虫项目。对于正在学习爬虫的朋友,文章会是个不错的起点。

IT 累计浏览 5,384

Quora使用到的技术

这篇讲的是Quora背后的技术栈分析。文章从大家熟悉的Stack Exchange和Facebook架构谈起,引出了对“知乎原型”Quora技术实现的深入探讨。 作者主要参考了Phil Whelan的剖析,核心聚焦于Quora如何构建其高并发、实时更新的知识社区。比如,文章会拆解它如何用Python和C++处理后端逻辑,如何通过Thrift进行高效通信,以及怎样利用Apache Kafka和Hadoop构建其复杂的数据管道和推荐系统。这些具体的技术选型与协作方式,构成了Quora能同时承载海量提问、回答与个性化推送的关键。 了解这些,并非为了照搬,而是看一个成功的社交问答平台如何权衡开发效率、系统性能与功能迭代。这对于正在设计类似系统或思考技术选型的团队,提供了非常具象的参考蓝图。

IT 累计浏览 5,204

附近地点搜索初探

这篇讲的是如何用Python和MySQL实现一个基础的附近地点搜索功能。作者从GPS普及带来的需求出发,直接切入了一个常见的工程难题:数据库只存储了经纬度,但我们需要根据“距离”这个条件来查询。 文章首先明确了技术选型,并比较了Great-circle和Haversine两种球面距离公式,最终选择了在计算精度上更稳健的Haversine公式,并给出了具体的Python实现函数。 整个方案的核心在于一个巧妙的思路转换。由于直接基于距离的查询无法有效利用数据库索引,作者提出先根据目标距离,计算出对应的经纬度范围(一个外接正方形),从而将“距离查询”转化为可以利用数据库索引的“范围查询”。文中推导并给出了计算经纬度差值的关键公式,并展示了如何构造SQL语句。 最后,文章也指出了该方案的局限性:矩形查询会引入部分超出距离范围的点。因此,对于要求严格的场景,还需要在查询结果中遍历并精确计算,过滤掉不符合条件的点。这个方案虽然不是最优解,但对于快速实现一个功能原型或处理小规模数据来说,简单直接且足够有效。

IT 累计浏览 13,068

我的PHP,Python和Ruby之路

这篇讲的是作者从2000年开始,横跨PHP、Python与Ruby三种语言的真实技术选择历程。文章以个人视角切入,记录了从互联网泡沫时期使用PHP,到转向企业级Java开发,再因Web 2.0浪潮重新审视脚本语言的全过程。 作者基于六年多的PHP使用体验,认为它门槛低、易部署,但一旦项目变大就容易代码失控,称其为“互联网时代的VB”。对于Python,他曾在2004年前后深入研究,但最终因Web开发框架(Django)的成熟度与便捷性不及Ruby on Rails而放弃。相反,他被Ruby优雅的面向对象语法和Rails框架的高效所打动,认为“Ruby可以开拓思维”,并最终选择用Rails重写了JavaEye网站。 决策核心在于:在有限人力与时间内,选择后期维护和升级成本最低的方案。作者比较了Java、C#、PHP、Python和Ruby的优劣,并结合了实际工程经验后做出了判断。这篇文章不仅是一段技术栈的变迁史,更提供了一个务实的技术选型思考框架。

IT 累计浏览 3,842

[python]定制JSON中的浮点数格式

这篇讲的是Python中一个相当恼人但常被忽视的问题:当你用 `json.dumps` 将列表或字典序列化时,其中的浮点数往往会变成一堆冗长的小数。作者从这个具体的痛点出发,演示了如何通过 `json.dumps` 的 `cls` 参数传入自定义的编码器类,来精确控制浮点数的输出格式。 文章的核心对比在于默认行为与定制化后的效果。默认情况下,`0.1` 可能被序列化为 `0.1`,但 `0.333` 却变成了 `0.33300000000000002`,这种不一致性会带来困扰。通过继承 `json.JSONEncoder` 并重写 `encode` 方法,你可以统一指定格式,比如将所有浮点数限制在两位小数:`0.333` 就会变成 `0.33`。这种技巧在处理价格、坐标等对精度格式有明确要求的场景下非常实用,能让生成的JSON既整洁又可靠。

IT 累计浏览 4,343

几个HIVE的streaming

作者分享了在实际项目(JIS旺铺装修数据开发)中,因Hive原生功能不足而编写四个Python Streaming的实战案例。每个案例都针对一个具体的数据处理痛点,提供了可直接复用或修改的代码示例。 文章逐一拆解了这四个脚本的核心逻辑:前两个用于处理流式数据中的“前序”与“后序”输出,基于分组和特定标志位(flag)进行行级过滤;第三个实现了十进制到三十六进制的转换函数;第四个则相对复杂,处理行内字段拼接与跨行分组聚合,并包含了时间戳格式化等细节。 这些实现的关键在于巧妙地利用了Streaming脚本对标准输入的逐行处理能力,通过维护状态(如前序ID、分组标识)来完成Hive SQL较难表达的序列逻辑。代码虽短,却展现了将复杂数据操作拆解为流式处理步骤的清晰思路,对于有类似数据清洗、序列归并需求的开发者很有参考价值。

IT 累计浏览 2,102

Mac下用easy_install装ZODB3

这篇讲的是作者在Mac上安装ZODB3这个Python数据库组件的实战经验。虽然Mac以安装软件方便著称,通常只需下载个.dmg文件就行,甚至比Windows更简单,但遇到通过Python包管理器安装特定库时,情况就不一样了。 作者没有走寻常的pip路线,而是详细记录了如何用easy_install来完成ZODB3的安装。文章具体交代了从安装环境准备(比如提到XCode安装虽耗时但流程简单)到执行安装命令的全过程,很可能也提及了其中可能遇到的一些环境配置细节或版本依赖问题。这恰恰为那些在类似环境下尝试安装ZODB3,却可能被默认安装方式困扰的开发者,提供了一条经过验证的清晰路径。 对于需要快速搭建ZODB3测试或开发环境,尤其是习惯使用Mac的开发者来说,这篇文章直接给出了一个可操作的解决方案,避免了在安装环节上花费额外时间摸索。

IT 累计浏览 2,724

*nix下关于配置的一些笔记

这篇笔记记录了作者近期在服务器配置方面的实践与思考。内容从最基础却容易出错的环境变量设置切入,例如在经典的Mac OS X 10.6 Snow Leopard系统中,如何正确配置`PATH`变量,确保命令行工具能被顺利调用。 文章并非简单的操作手册,而是作者在反复实践后的经验沉淀。它将零散的配置命令与背后的原理串联起来,解释了“为什么要这样设置”以及“常见的坑在哪里”。这种将实践过程笔记化的方式,让枯燥的配置工作有了脉络,也揭示了系统环境管理中那些“知其然更要知其所以然”的细节。 对于同样需要在多台服务器或本地环境间切换的开发者或运维人员而言,这些来自一线、经过验证的笔记片段,或许能直接成为你解决问题时的参考清单,避免重新踩入已知的“坑”。

IT 累计浏览 3,061

python装饰器的一个妙用

这篇讲的是作者从实际开发需求出发,分享了Python装饰器一个非常实用的“妙用”。作者首先解释了装饰器的核心概念——它本质上是一个高阶函数,能够无侵入地为其他函数或类增加额外功能,比如日志记录、性能计时或权限校验。 文章的重点在于展示一个具体案例:如何通过装饰器,优雅地为多个独立的业务函数统一添加一层“参数验证与缓存”逻辑。作者没有停留在理论层面,而是演示了装饰器的实现过程,特别是如何利用闭包和函数参数解析(*args, **kwargs)来捕获被装饰函数的输入,并决定是执行原函数还是返回缓存结果。 其中最巧妙的一点是,通过设计一个可配置的装饰器,让缓存策略(如基于参数哈希或时间窗口)变得灵活可调。这避免了在每个函数内部重复编写验证和缓存代码,显著提升了代码的可维护性和复用性。文章用实际代码片段清晰地展示了这种模式如何让业务逻辑更加干净,把横切关注点集中到一处处理。对于希望提升代码优雅度的Python开发者来说,这是一个能直接拿去用的实用技巧。

IT 累计浏览 7,296

让Vim(gVim)更好的支持python语法缩进(强烈推荐)

这篇讲的是如何解决Vim/gVim编辑Python时常见的缩进痛点。作者发现,随着Python使用频率增加,Vim默认的缩进行为在处理Python代码时会变得别扭,比如制表符与空格的转换、自动缩进逻辑不符合PEP8规范等。文章深入剖析了这些问题的根源——Vim的通用缩进策略与Python强制缩进的语法特性不匹配。核心解决方案围绕定制`vimrc`配置展开,详细介绍了如何调整`expandtab`、`tabstop`等选项,并建议配合`python-mode`或`vim-python-pep8-indent`这类专用插件,让缩进变得更“Pythonic”。经过这番调教,Vim就能真正成为一个对Python开发者友好的高效编辑器,省去手动修正缩进的麻烦。

IT 累计浏览 1,782

一些有意思的贴子和工具

这是一篇典型的资源集合类推荐。作者延续了CoolShell上杂项分享的风格,将近期在互联网上发现的各种新奇有趣的网站、工具和讨论帖子汇编在一起。不同于专题文章,它的价值在于精心筛选后的“发现感”。 文章涵盖了从实用开发工具到脑洞大开的在线项目,可能包括提高效率的命令行神器、设计独特的Web应用,或是程序员社区里引发热烈讨论的深度帖。作者并非简单罗列链接,而是为每个资源附上了简短的个人点评或背景说明,帮助读者快速判断其趣味点和实用价值,节省了大家自行发掘的时间。 这种持续更新的杂项集合,就像一个不断扩展的“有趣事物清单”,非常适合技术爱好者作为日常灵感的来源,或者在工作间隙换换脑子时浏览,总能从中发现一两个让你眼前一亮的东西。

IT 累计浏览 5,586

注释里的诅咒:哪种语言遭受最多的咒骂?

作者从代码仓库的提交记录和代码注释入手,做了一项有趣的研究:对比不同编程语言的开发者在协作时,究竟谁在代码里“骂得最凶”。研究发现,Ruby开发者堪称“口吐芬芳”的冠军,其代码库中的咒骂用语密度远超其他语言。PHP、Python、Java和C++紧随其后,各有独特的“脏话风格”。 这项对比不仅揭示了不同语言社区的亚文化差异,更巧妙地指向了编程体验与情绪关联的深层问题。比如,Ruby的高表达性可能放大了开发中的挫折感,而PHP的争议性则可能直接反映在开发者的吐槽里。C++因其复杂性,其注释中的“诅咒”往往更具体、更具技术针对性。 因此,这篇文章并非只是猎奇。它从一个意想不到的侧面,为我们理解开发者生态、语言设计哲学及其带来的实际编码感受,提供了一份带着“人味”的数据报告。下次当你在代码中写下一句抱怨时,你可能正在参与一项有趣的全球文化统计。

IT 累计浏览 3,191

今年,我们二十七八岁

这篇讲的是二十七八岁这个人生阶段里,一群年轻人的真实状态。 作者从“二十七八岁”这个微妙的年纪出发,描绘了这群人介于“青年”与“中年”之间的独特处境。他们往往在职场上褪去了新人的青涩,却也还未积累足够的底气;可能初尝为人父母的责任,或正面对着“而立”前的现实压力。文章没有停留在简单的年龄感慨上,而是细致刻画了他们内心的焦虑、迷茫与一种“不上不下”的漂浮感——对过去回望,对未来张望,在日复一日的奔忙中,不断思考生活的意义与自我的位置。 这篇文章的共鸣点在于,它精准捕捉了技术从业者(也包括许多同龄人)在事业爬坡期与家庭形成期叠加时,那种普遍存在的、需要被看见的心理状态。它提供的不是解决方案,而是一面镜子,让读者在其中看到相似的自己,并意识到这种复杂情绪是这一代人的共同背景音。

IT 累计浏览 2,885

2011互联网技术发展浅析

这篇发布于2011年初、现经整理重温的文章,将目光投向了互联网技术史上一个承前启后的关键节点。作者从当时快速演进的技术生态出发,对Web开发框架、云计算基础架构、大规模数据处理等领域的动态进行了系统性的梳理与剖析。 文章的核心并非罗列事件,而是试图捕捉技术演进背后的趋势与脉络。它记录了在那个移动互联网刚起步的年代,业界如何应对流量增长、系统复杂化带来的挑战,并做出了哪些重要的技术选型与架构决策。例如,文中对NoSQL数据库的兴起、前后端分离的萌芽等趋势的观察,在今天看来依然具有预见性。 时隔多年再看这篇文章,其价值已超越了具体的技术细节。它像一份详尽的“技术考古”报告,为我们保存了那个充满探索与变革时期的真实切片。通过回顾这些十年多前的分析,读者不仅能理解当下诸多主流技术的源头与必然性,更能从中领悟技术发展的周期性规律,为当下及未来的架构思考提供珍贵的历史参照。

IT 累计浏览 3,523

漫画:为什么搞计算机工作的人总是看上去很清闲

这篇漫画文章从一个常见的观察切入:许多计算机行业的从业者——比如程序员、系统管理员或设计师——在同事或外人眼里总显得格外清闲,仿佛整天只是坐在屏幕前敲敲打打。作者借由一组幽默的漫画,拆解了这种“清闲假象”背后的真实原因。 文章的核心观点指出,计算机工作高度依赖脑力劳动和抽象思考,这些活动往往不产生直观的物理输出。比如,程序员可能花大量时间构思算法架构、调试代码逻辑,或者等待程序编译运行,这些环节在外人看来就像在发呆或上网。漫画中生动描绘了诸如“思考时盯着屏幕”、“快速敲几下键盘就能解决复杂问题”等场景,突显了技术工作的隐性特征:高效工具和自动化流程让实际操作时间缩短,但前期设计和问题排查却消耗大量心智资源。 同时,文章也暗示了这种现象的文化维度——计算机工作者常被理想化为“天才型”角色,容易忽视其背后的持续学习和协作压力。它提醒读者,工作价值不能仅凭表面忙碌度来衡量,真正的产出可能藏在代码行、系统稳定性或创新方案中。读完这篇,你或许会对身边的“清闲”同事多一份理解,也可能反思自己对工作可见度的认知偏差。

IT 累计浏览 10,068

最受欢迎的10个 Linux 单行命令

这篇内容从 Commandlinefu 网站的用户投票中,提炼出了最受欢迎的10个 Linux 单行命令。这些命令以其巧妙的设计和高效的执行而备受推崇,涵盖了从文件处理、系统监控到文本操作的多种场景。例如,有的命令能一行代码完成日志的快速过滤和分析,有的则简化了批量备份或网络诊断的步骤。文章通过分条列出的方式,详细解释了每个命令的用途和实际效果,让读者能直观感受到它们在不同工作流中的应用价值。 每个命令都代表了 Linux 命令行工具的一个缩影,体现了开源社区的集体智慧

IT 累计浏览 5,824

C,C++代码中调用python脚本

这篇讲的是作者在开发通用任务系统时,针对“C++如何灵活调用其他语言脚本”这一需求,提出的一种具体方案。背景源于项目组计划引入跨语言脚本能力,而团队以往常见的选择是嵌入Lua。作者将目光投向了Python,并详细实践了如何通过Python的C API在C++代码中启动和执行Python脚本。 文章的核心,是从工程角度拆解了整个集成流程。这不仅仅是简单的调用,而是涉及如何在C++进程内初始化Python解释器、正确地传递参数、调用Python函数并处理返回值,甚至包括了如何处理Python中的异常。作者分享了其中的关键代码片段和需要注意的内存管理细节,比如对象引用计数的处理,这些都是实战中容易踩坑的地方。 通过这种深度的嵌入式集成,C++程序获得了直接利用Python生态丰富库和快速脚本能力的途径,对于需要兼顾性能与开发灵活度的场景非常适用。文章以一次实际的跨语言调用尝试,清晰地展示了这条路径的可行性和具体实现要点。