Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅。
与其他面向对象编程语言相比, Python 有自己独特的一面。
这让很多开发人员在学习 Python 时,多少有些无所适从。
那么,Python 对象模型都有哪些特色呢?
一切皆对象
首先,在 Python 世界, 基本类型也是对象 ,与通常意义的“对象”形成一个有机统一。
换句话讲, Python 不再区别对待基本类型和对象,所有基本类型内部均由对象实现。
一个整数是一个对象,一个字符串也是一个对象:
其次, Python 中的 类型也是一种对象 ,称为 类型对象 。
整数类型是一个对象,字符串类型是一个对象,程序中通过 class 关键字定义的类也是一个对象。
举个例子,整数类型在 Python 内部是一个对象 …
阅读全文
一直以来,编码问题像幽灵一般,不少开发人员都受过它的困扰。
试想你请求一个数据,却得到一堆乱码,丈二和尚摸不着头脑。
有同事质疑你的数据是乱码,虽然你很确定传了 UTF-8 ,但无法自证清白,更别说帮同事 debug 了。
有时,靠着百度和一手瞎调的手艺,乱码也能解决。
尽管如此,还是很羡慕那些骨灰级程序员。
为什么他们每次都能犀利地指出问题,并快速修复呢?
原因在于,他们早就把编码问题背后的各种来龙去脉搞清楚了。
本文从 ASCII 码说起,带你扒一扒编码背后那些事。
相信搞清编码的原理后,你将不再畏惧任何编码问题,彻底与乱码说拜拜。
从 ASCII 码说起
现代计算机技术从英文国家兴起,最先遇到的也是英文文本。
英文文本一般由 26 个字母、 10 个数字以及若干符号组成,总数也不过 100 左右。
计算机中最基本的存储单位为 字节 ( byte ),由 8 个比特位( bit )组成 …
阅读全文
Python 可以读写 Excel 表格吗?
当然可以。 Python 下有很多类库可以做到, openpyxl 就是其中的佼佼者。
openpyxl 的 设计非常漂亮 ,你一定会喜欢它!不信请往下看:
工作簿
开始 openpyxl 前,无需提前建好工作簿( Workbook )。
只需导入 Workbook 类,便可在内存中创建新工作簿并开始操作:
>>> from openpyxl import Workbook
>>> wb = Workbook()
新建的工作簿默认预先建好一个工作表,通过 active 属性即可获取:
Note
如果工作簿包含多个工作表,该属性将返回第一个。
通过 create_sheet 方法,可以创建新的工作表。
创建可以是在后面追加:
>>> ws1 = wb.create_sheet('Mysheet')
或者 …
阅读全文
在 Python 中, 装饰器 一般用来修饰函数,实现公共功能,达到代码复用的目的。
在函数定义前加上 @xxxx ,然后函数就注入了某些功能,很神奇!
然而,这只是 语法糖 而已,起决定性作用的其实是 闭包 。
场景
假设,有一些工作函数,用来对数据做不同的处理:
def work_bar(data):
pass
def work_foo(data):
pass
我们想在函数调用前后输出日志,怎么办?
傻瓜解法
logging.info('begin call work_bar')
work_bar(1)
logging.info('call work_bar done')
如果有多处代码调用呢?想想就怕!
函数包装
傻瓜解法无非是有太多代码冗余,每次函数调用都要写一遍 logging …
阅读全文