字符串 Intern 机制
字符串在 Python 中是最简单也是最常用的数据类型之一,在 CPython 中字符串的实现原理使用了一种叫做 Intern(字符串驻留)的技术来提高字符串效率。究竟什么是 intern 机制,这种机制又是通过什么方式来提高字符串效率的呢?希望这篇文章能够抛砖引玉。 先来看一段代码: >>> s3 = "hello!" >>> s4 = "hello!" >>> s3 is s4 ...
more ...单例模式的几种写法
方法一:使用装饰器 装饰器维护一个字典对象instances,缓存了所有单例类,只要单例不存在则创建,已经存在直接返回该实例对象。 def singleton(cls): instances = {} def wrapper(*args, kwargs): if cls not in instances: instances[cls] = cls(*args, kwargs) ...
more ...Python 2 和 Python 3 主要区别有哪些(一)?
Guido(Python之父,仁慈的独裁者)在设计 Python3 的过程中,受一篇文章 “Python warts” 的影响,决定不向后兼容,否则无法修复大多数缺陷。---摘录自《流畅的Python》 你可能从来没有听说过学 Java 的纠结是学 JDK6 还是 JDK7,也没听说学 PHP 的纠结是学 PHP5 还是 PHP7,但在 Python 社区,有这么个怪问题:“学 ...
more ...Python进阶好书推荐
上次给大家推荐了 Python 入门书,这次有读者问撸完了入门书之后该看什么书,这次就来推荐一本进阶书《Effective Python》。 书的作者是 Google 高级工程师 Brett Slatkin,Python 在 Google 是和 C++、Java 并驾齐驱的三大应用编程语言之一,作者融合了多年 Python 开发实战经验编著这边书,内容涵盖了 Python3.x 和 ...
more ...耐人寻味的 for...else...语句
老婆给当程序员的老公打电话:“下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。”当晚,程序员老公手捧一个包子进了家门……老婆怒道:“你怎么就买了一个包子?”老公答曰:“因为看到了卖西瓜的。” 程序员买西瓜的笑话可能大部分读者都知道,今天写的这篇文章和这个笑话有一定的关系。 任何编程语言都提供了 if...else... ...
more ...如何正确理解@classmethod与@staticmethod
Python面向对象编程中,类中定义的方法可以是 @classmethod 装饰的类方法,也可以是 @staticmethod 装饰的静态方法,用的最多的还是不带装饰器的实例方法,如果把这几个方法放一块,对初学者来说无疑是一头雾水,那我们该如何正确地使用它们呢? 先来看一个简单示例: class A(object): def m1(self, n): print("self:", ...
more ...Pycharm自动导入模块小技巧
Pycharm是很多Python开发者的首选IDE,如果能把一个工具熟练运用,往往有事半功倍的效果,各种快捷键、重构功能、调试技巧。由于Python是一门动态语言,对于自动导入包模块没有静态语言那么方便,但是我们有了Pycharm,还是可以很强大的。 ...
more ...简述 __init__、__new__、__call__ 方法
任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建、初始化、使用、垃圾回收,不同的阶段由不同的方法(角色)负责执行。 定义一个类时,大家用得最多的就是 init 方法,而 new 和 call 使用得比较少,这篇文章试图帮助大家把这3个方法的正确使用方式和应用场景分别解释一下。 关于 Python ...
more ...一本书搞定Python入门到实践
上周介绍了几本Python从入门到进阶书籍,今天继续推荐好书,这本书是《Python编程:从入门到实践》。入门 Python 最好的书之一,适合零基础小白,也适合有其它语言背景的程序员 书中有哪些亮点? 豆瓣评分高达8.6,主要基于 Python3.5 讲解,同时也兼顾到了 Python2.7 ,作者推荐的编辑器 Geany 我没用过,不好做评论,不过个人推荐使用 Pycharm 或者 ...
more ...Python是怎么火起来的
几年前 Python 在国内还只是一门小众语言,但从 2011 开始到现在,Python 的百度搜索指数翻了10 倍,从下图看得出 Python 在国内的流行度已经直逼 Java (百度指数) 一个行业火不火,就看有多少(自)媒体、培训机构涌入进来为之疯狂,用百度搜关键字“python”就有5条是培训广告,而Ruby、PHP、Go ...
more ...for循环在Python中是怎么工作的
注:本文针对的示例是针对Python3,同时对Python2做了注释,注意区分自己使用的版本。 for...in 是Python程序员使用最多的语句,for 循环用于迭代容器对象中的元素,这些对象可以是列表、元组、字典、集合、文件,甚至可以是自定义类或者函数,例如: 作用于列表 >>> for elem in [1,2,3]: ... print(elem) ... 1 2 3 作用于元组 ...
more ...推荐书单:Python入门进阶推荐书单
《A Byte Of Python》 中文《简明Python教程》本书采用知识共享协议免费分发,意味着任何人都可以免费获取,这本书走过了11个年头,最新版以Python3为基础同时也会兼顾到Python2的一些东西,内容非常精简,适合零基础入门,回复 「byte」可下载 豆瓣评分:8.8 推荐指数:✩✩✩✩✩ 下载地址:http://t.cn/RoaxJVZ 《Head first ...
more ...Python类里面的方法是如何工作的
在OO(面向对象)编程中,类中的方法有多种形式:实例方法、静态方法、类方法、甚至还可以有抽象方法,本文来说说实例方法在Python中是如何工作的,后面再来谈其他方法。 先来定义一个最简单类: class Person: def init(self, name): self.name = name def eat(self): print(self) # ...
more ...[Python]写个带参数的装饰器
上篇文章 Python装饰器为什么难理解?从函数到装饰器一步一步介绍了Python装饰器的来由,不知你对装饰器理解了没有,强烈建议你自己动手写个装饰器应用到项目中加深理解。装饰器可以很简单,也可以很复杂,具体看业务场景,简单装饰器不带任何参数,而带参数的装饰器则更灵活,还有一种更为复杂的叫类装饰器。 ...
more ...Python装饰器为什么难理解?
无论项目中还是面试都离不开装饰器话题,装饰器的强大在于它能够在不修改原有业务逻辑的情况下对代码进行扩展,权限校验、用户认证、日志记录、性能测试、事务处理、缓存等都是装饰器的绝佳应用场景,它能够最大程度地对代码进行复用。 但为什么初学者对装饰器的理解如此困难,我认为本质上是对Python函数理解不到位,因为装饰器本质上还是函数 函数定义 ...
more ...