Python记录篇
文章平均质量分 71
一流木
这家伙倍儿靠谱
展开
-
Pythonic到底是什么玩意儿?
作者:Martijn Faassen译者:赖勇浩(http://blog.csdn.net/lanphaday)原文地址:http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0注:Martijn 是 Zope 领域的专家,他为 Zope 系列产品做了许多开发工作,也开发了 lxml 等多个开源产品。你可以在这里了解一下他的信息h转载 2014-03-13 23:57:48 · 768 阅读 · 0 评论 -
Python yield 使用浅析
清单 1 简单输出斐波那契數列前 N 个数清单 2 输出斐波那契數列前 N 个数第二版清单 3 通过 iterable 对象来迭代清单 4 第三个版本清单 5 使用 yield 的第四版清单 6 执行流程清单 7 使用 isgeneratorfunction 判断清单 8 类的定义和类的实例return 的作用另一个例子转载 2015-03-26 16:23:47 · 624 阅读 · 0 评论 -
python defaultdict
Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会带来很多的便利,多看看很有好处。defaultdict是其中一个方法,就是给字典value元素添加默认类型from collections import defaultdictdef default_factory(): return 'default val原创 2015-03-30 15:13:03 · 803 阅读 · 0 评论 -
python - __str__ 和 __repr__
内建函数str()和repr() (representation,表达,表示)或反引号操作符(``)可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。str()函数得到的字符串可读性好(故被print调用),而repr()函数得到的字符串通常可以用来重新获得该对象,通常情况下 obj==eval(repr(obj)) 这个等式是成立的。这两个函数接受一个对象作为其参数,返回适当的字符串转载 2015-03-30 10:52:52 · 604 阅读 · 0 评论 -
[Python]一个有趣的库:pipe
pipe并不是Python内置的库,如果你安装了easy_install,直接可以安装它,否则你需要自己下载它:http://pypi.python.org/pypi/pipe之所以要介绍这个库,是因为它向我们展示了一种很有新意的使用迭代器和生成器的方式:流。pipe将可迭代的数据看成是流,类似于linux,pipe使用'|'传递数据流,并且定义了一系列的“流处理”函数用于接受并处理数据流转载 2015-03-18 15:51:35 · 1104 阅读 · 0 评论 -
Python 一些特别函数 __getitem__ __getattr__
Python 内置的一些函数,通过重载它们,可以定制自己想要的功能。特别说明一下包含 item 类的函数是通过下标[]操作字典的,包含 attr 类函数是通过 . 操作属性的。class A(object): def __init__(self, *args, **kwargs): print 'call func init' self.item = {转载 2015-04-02 16:43:36 · 937 阅读 · 0 评论 -
python中的__new__()方法
先看下object类中对__new__()方法的定义:class object: @staticmethod # known case of __new__ def __new__(cls, *more): # known special case of object.__new__ """ T.__new__(S, ...) -> a new object原创 2015-04-02 19:18:25 · 1316 阅读 · 0 评论 -
Six提供了Python 2和Python 3的兼容库
地址:http://packages.python.org/six/Six provides simple utilities for wrapping over differences between Python 2 and Python 3.Six can be downloaded on PyPi. Its bug tracker and code hosting is on转载 2015-04-02 12:19:51 · 3130 阅读 · 0 评论 -
安装独立Python虚拟环境:virtualenv
virtualenv Python有着庞大的开源社区的支持,很自然就产生这么一个问题:第三方包参差不齐,如果我们想在服务器测试,或者升级某个包,就会导致生产环境产生杂乱,多余的第三方依赖包。virtualenv就是来解决这个问题的,virtualenv可以生成多个的Python环境,各个环境相互独立,互不影响,且和正式环境一模一样。1、安装pip install virtualen原创 2014-07-08 23:51:47 · 17617 阅读 · 0 评论 -
关于代码解耦
烂的代码,都有各自烂的地方,不过基本都有一个共同的特点:耦合重,各个模块各个类各个功能点之间关系牵扯不清,经常你调用我调用你,或者全局变量漫天飞;对于怎么理清这些模块或者类,《代码大全》讲了很多,比如要形成金字塔型的调用层级关系,如果不能保证,也一定要保证单向的调用关系,绝对不能形成环状的调用关系;即:A->B->C而不能是 A->B->C->A,尤转载 2017-08-06 17:37:56 · 1719 阅读 · 0 评论 -
什么是Monkey Patch猴子补丁
猴子补丁是一个概念,不是python中发明的,其他动态语言也有这么个概念。《松本行弘的程序世界》这本书,里面专门有一章讲了猴子补丁的设计,所谓的猴子补丁的含义是指在动态语言中,不去改变源码而对功能进行追加和变更。猴子补丁的这个叫法起源于Zope框架,大家在修正Zope的Bug的时候经常在程序后面追加更新部分,这些被称作是“杂牌军补丁(guerilla patch)”,后来guerilla就渐渐原创 2017-09-14 22:17:52 · 2767 阅读 · 0 评论 -
uwsgi引入gevent模块报错
将uwsgi日志加入:gevent=100 #gevent协程支持,最大100个gevent-monkey-patch=true #gevent协程补丁发现django出现以下错误:django.db.utils.DatabaseError: DatabaseWrapper objects created in a thread can only be used in th原创 2017-09-14 17:51:01 · 3615 阅读 · 1 评论 -
python爬虫的最佳实践(五)--selenium+PhantomJS的简单使用
Ps:又到了我们的ps环节,不知道上次大家尝试的如何,这次我们将简单介绍如何使用selenium+PhantomJS来抓取异步加载的网页数据信息。当然,selenium是一个非常强大的自动化工具,可以做非常多的事,有兴趣的同学可以自行了解一下。这次我们的顺序稍稍变化一下,因为牵扯到配置环境。环境配置seleniumpip install -U selenium建议采用pyc转载 2017-09-19 20:20:33 · 1298 阅读 · 0 评论 -
Linux下使用pdb简单调试python程序
python自带调试工具库:pdb# -*- coding:utf-8 -*-def func(num): s = num * 10 return sif __name__ == '__main__': print 'debug starting...' print '*' * 10 print ‘debug ending…’ num原创 2014-06-20 23:56:09 · 6742 阅读 · 0 评论 -
Python垃圾回收机制
Python GC主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题。通过“分代回收”(generation collection)以空间换取时间来提高垃圾回收效率。引用计数在Python中,大多数对象的生命周期都是通过对象的引用计数来管理的。从广义上原创 2014-07-06 18:20:29 · 1783 阅读 · 0 评论 -
python的setup.py文件
最近工作需要,用Cython写了*.pyx扩展,并将其编译成C文件,最后转换为so扩展,供python引用使用 distutils 编译,建立一个setup.py 的脚本from distutils.core import setupfrom distutils.extension import Extensionfrom Cython.Distutils import b原创 2014-06-14 23:19:04 · 13660 阅读 · 1 评论 -
Python如何替换'&#'开头的html实体,比如:阳
有时候,我们在抓取的过程中,将HTML实体内容抓到后,存储到了数据库中,这时候在读取数据库的时候,就会以实体的形式出现(当然,如果是在Web页面上展示,则实体会自动被浏览器转为原字符,正常显示),这时候我们需要对其进行处理。Python中提供了一个模块:HTMLParser,里面有很多好用的方法,我们可以使用:dir(HTMLParser.HTMLParser)查看该模块下的HTMLPar原创 2014-03-14 11:44:03 · 5537 阅读 · 0 评论 -
Python性能鸡汤
第一部分 阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. "它肯定很慢!" 毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用Python服务于每小时4千转载 2014-03-17 11:38:44 · 1569 阅读 · 0 评论 -
Python简单抓取原理引出分布式爬虫
首先,我们先来看看,如果是人正常的行为,是如何获取网页内容的。(1)打开浏览器,输入URL,打开源网页(2)选取我们想要的内容,包括标题,作者,摘要,正文等信息(3)存储到硬盘中上面的三个过程,映射到技术层面上,其实就是:网络请求,抓取结构化数据,数据存储。我们使用Python写一个简单的程序,实现上面的简单抓取功能。#!/usr/bin/python#-*- cod原创 2014-03-16 20:40:56 · 11546 阅读 · 7 评论 -
MAC OSX使用Python安装模块问题
系统环境:MAC OSX 10.9.2Python版本:2.7.5新入手的RMBP,自带了Python环境,但是将其投入到生产环境时,出现了种种问题,首先最最致命的,就是安装模块出现问题,导致一直无法正常开发,下面是本人在安装Python模块的时候,所出现并解决的,总结如下,希望对后来者有帮助(拿MySQL-python举例,安装PIL也遇到了同样的问题):(1)不管在使用easy_i原创 2014-04-05 21:31:57 · 6796 阅读 · 0 评论 -
python 进程池1 - Pool使用简介
有些情况下,所要完成的工作可以分解并独立地分布到多个工作进程,对于这种简单的情况,可以用Pool类来管理固定数目的工作进程。作业的返回值会收集并作为一个列表返回。(以下程序cpu数量为2,相关函数解释见python 进程池2 - Pool相关函数)。import multiprocessingdef do_calculation(data): return data*2d转载 2014-04-07 22:51:48 · 1323 阅读 · 0 评论 -
Python 并行任务技巧
Python的并发处理能力臭名昭著。先撇开线程以及GIL方面的问题不说,我觉得多线程问题的根源不在技术上而在于理念。大部分关于Pyhon线程和多进程的资料虽然都很不错,但却过于细节。这些资料讲的都是虎头蛇尾,到了真正实际使用的部分却草草结束了。传统例子在DDG https://duckduckgo.com/ 搜索“Python threading tutorial”关键字,结果基本转载 2014-04-07 23:36:37 · 1326 阅读 · 0 评论 -
python 进程池2 - Pool相关函数
python自2.6开始提供了多进程模块multiprocessing,进程池使用multiprocessing.pool,pool的构造如下:multiprocessing.Pool([processes[, initializer[, initargs[, maxtasksperchild]]]]) processes表示pool中进程的数目,默认地为当前CPU的核数转载 2014-04-07 22:53:24 · 1549 阅读 · 0 评论 -
MIME详解
目录(?)[-]MIME邮件格式分析域Content-Type域multipart类型Content-Transfer-Encoding域MIME邮件信息提取收件人发件人邮件主题的提取multipart分段信息的提取邮件附件的提取总结转载 2014-05-10 00:09:19 · 939 阅读 · 0 评论 -
架构设计:生产者/消费者模式 第1页:“生产者/消费者模式”介绍
★简介 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。 单单抽象出生产者和消费者,还够不上是生产者/消费者模式。该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而转载 2014-05-10 00:00:00 · 699 阅读 · 0 评论 -
Python语言的创始人解释为什么Python数组的索引从0开始
最近有人在Twitter是问我为什么Python使用以0为第一位的数组索引方式(以下简称0-based),并让我看一篇关于这个主题的文章(很有趣)。这引起了我不少的回忆。ABC语言——Python的祖先之一,使用的是以1为第一为的索引方式(以下简称1-based),而C语言——另一种对Python有影响巨大的语言,使用0-based方式。我最早学习的几种语言(Algol, Fortran, P转载 2014-04-12 21:28:28 · 1217 阅读 · 0 评论 -
Cython 快速入门
我最喜欢的是Python,它的代码优雅而实用,可惜纯粹从速度上来看它比大多数语言都要慢。大多数人也认为的速度和易于使用是两极对立的——编写C代码的确非常痛苦。而 Cython 试图消除这种两重性,并让你同时拥有 Python 的语法和 C 数据类型和函数——它们两个都是世界上最好的。请记住,我绝不是我在这方面的专家,这是我的第一次Cython真实体验的笔记:编辑:根据一些我收到的反馈,大家转载 2014-06-07 00:50:09 · 1375 阅读 · 0 评论 -
OSX anaconda虚拟环境py27,安装编译MySQLdb出现fatal error: limits.h: No such file or directory
(py27) ➜ MySQL-python-1.2.3 python setup.py buildrunning buildrunning build_pycopying MySQLdb/release.py -> build/lib.macosx-10.7-x86_64-2.7/MySQLdbrunning build_extbuilding '_mysql' extensiong原创 2017-09-29 11:40:39 · 4853 阅读 · 0 评论